[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"SauceCTL Runner Configuration","description":"Configuration file for saucectl.","type":"object","properties":{"kind":{"enum":["apitest","cypress","espresso","playwright","puppeteer-replay","testcafe","xcuitest","xctest","playwright-cucumberjs"]}},"allOf":[{"if":{"properties":{"kind":{"const":"cypress"},"apiVersion":{"const":"v1"}}},"then":{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"saucectl cypress runner configuration","description":"Configuration file for cypress using saucectl","type":"object","allOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"saucectl artifacts schema","description":"Subschema for controlling artifacts","type":"object","properties":{"artifacts":{"description":"Manage test output, such as logs, videos, and screenshots.","type":"object","properties":{"cleanup":{"description":"Whether to remove all contents of artifacts directory","type":"boolean"},"download":{"description":"Settings related to downloading test artifacts from Sauce Labs.","type":"object","properties":{"match":{"description":"Specifies which artifacts to download based on whether they match the file pattern provided. Supports the wildcard character '*'.","type":"array"},"when":{"description":"Specifies when and under what circumstances to download artifacts.","enum":["always","fail","never","pass"]},"directory":{"description":"Specifies the path to the folder in which to download artifacts. A separate subdirectory is generated in this location for each suite.","type":"string"},"allAttempts":{"description":"If true and a test is retried, artifacts for every attempt will be downloaded. Otherwise, only artifacts for the final attempt will be downloaded.","type":"boolean"}},"required":["when","match","directory"],"additionalProperties":false},"retain":{"description":"Compress folders into zip files, which can then be downloaded as artifacts.","type":"object","additionalProperties":{"type":"string"}}},"additionalProperties":false}},"additionalProperties":true},{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"saucectl npm specific schema","description":"Subschema for npm specific settings","type":"object","properties":{"npm":{"description":"Settings specific to npm.","type":"object","properties":{"usePackageLock":{"type":"boolean","description":"Specifies whether to use the project's package-lock.json when installing npm dependencies. If true, package-lock.json will be used during installation which will improve the speed of installation."},"packages":{"description":"Specifies any npm packages that are required to run tests.","type":"object"},"dependencies":{"description":"Specify local npm dependencies for saucectl to upload. These dependencies must already be installed in the local node_modules directory.","type":"array"},"registry":{"description":"Override the default and official NPM registry URL with a custom one.","type":"string","deprecated":true},"strictSSL":{"description":"Whether or not to do SSL key validation when making requests to the registry via https.","type":"boolean"},"registries":{"description":"Specify all the registries you want to configure","type":"array","minimum":0,"items":{"type":"object","properties":{"scope":{"description":"Scope for the registry entry","type":"string"},"url":{"description":"URL for the registry entry","type":"string"},"authToken":{"description":"Authentication token for the registry entry","type":"string"},"auth":{"description":"Base64-encoded authentication string for the registry entry","type":"string"},"username":{"description":"Username for authentication with the registry","type":"string"},"password":{"description":"Password for authentication with the registry","type":"string"},"email":{"description":"Email for authentication with the registry","type":"string"}},"required":["url"]}}},"additionalProperties":false}},"additionalProperties":true},{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"saucectl sauce specific schema","description":"Subschema for sauce specific settings","type":"object","properties":{"sauce":{"description":"All settings related to how tests are run and identified in the Sauce Labs platform.","type":"object","properties":{"concurrency":{"description":"Sets the maximum number of suites to execute at the same time. Excess suites are queued and run in order as each suite completes.","type":"integer","minimum":1},"metadata":{"description":"The set of properties that allows you to provide additional information about your project that helps you distinguish it in the various environments in which it is used and reviewed.","type":"object","properties":{"build":{"description":"Sauce Labs can aggregate all jobs under one view based on their association with a build.","type":"string"},"tags":{"description":"Tag your jobs so you can find them easier in Sauce Labs.","type":"array"}},"additionalProperties":false},"region":{"description":"Which Sauce Labs data center to target.","enum":["us-west-1","eu-central-1"]},"sauceignore":{"description":"Path to the .sauceignore file.","default":".sauceignore"},"tunnel":{"description":"SauceCTL supports using Sauce Connect to establish a secure connection when running your tests on Sauce Labs. To do so, launch a tunnel; then provide the identifier in this property.","properties":{"name":{"description":"The tunnel name.","type":"string"},"owner":{"description":"The owner (username) of the tunnel. Must be specified if the user that created the tunnel differs from the user that is running the tests.","type":"string"}},"required":["name"],"additionalProperties":false},"retries":{"description":"The number of times to retry a failing suite.","type":"integer","minimum":0},"visibility":{"description":"Set the visibility level of test results for suites run on Sauce Labs.","default":"team","type":"string","oneOf":[{"const":"public","title":"Accessible to everyone."},{"const":"public restricted","title":"Share your test's results page and video, but keeps the logs only for you."},{"const":"share","title":"Only accessible to people with a valid link."},{"const":"team","title":"Only accessible to people under the same root account as you."},{"const":"private","title":"Only you (the owner) will be able to view assets and test results page."}]},"launchOrder":{"description":"Control starting order of suites. The default is the order in which suites are written in the config file.","type":"string","oneOf":[{"const":"fail rate","title":"Suites that historically have the highest failure rate start first."}]}},"additionalProperties":false}},"additionalProperties":true},{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"saucectl reporters specific schema","description":"Subschema for reporters specific settings","type":"object","properties":{"reporters":{"type":"object","properties":{"junit":{"type":"object","description":"The JUnit reporter merges test results from all jobs in the JUnit format into a single report.","properties":{"enabled":{"description":"Toggles the reporter on/off.","type":"boolean"},"filename":{"description":"Filename for the generated JUnit report.","type":"string","default":"saucectl-report.xml"}}},"json":{"type":"object","description":"The JSON reporter merges test results from all jobs in the JSON format into a single report.","properties":{"enabled":{"description":"Toggles the reporter on/off.","type":"boolean"},"webhookURL":{"description":"Webhook URL to pass JSON report.","type":"string"},"filename":{"description":"Filename for the generated JSON report.","type":"string","default":"saucectl-report.json"}}},"spotlight":{"type":"object","description":"The spotlight reporter prints an overview of failed, or otherwise interesting, jobs.","properties":{"enabled":{"description":"Toggles the reporter on/off.","type":"boolean"}}}},"additionalProperties":false}},"additionalProperties":true}],"properties":{"apiVersion":{"const":"v1"},"kind":{"const":"cypress"},"nodeVersion":{"description":"Specifies the Node.js version for Sauce Cloud. Supports SemVer notation and aliases.","examples":["v20","iron","lts"]},"showConsoleLog":{"description":"Shows suites console.log locally. By default console.log is only shown on failures.","type":"boolean"},"defaults":{"description":"Settings that are applied onto every suite by default, if no value is set on a suite explicitly.","type":"object","properties":{"timeout":{"description":"Instructs how long (in ms, s, m, or h) saucectl should wait for a suite to complete.","type":"string","pattern":"^(?:\\d+h)?(?:\\d+m)?(?:\\d+s)?(?:\\d+ms)?$","examples":["1h","10m","90s"]}},"additionalProperties":false},"rootDir":{"description":"The directory of files that need to be bundled and uploaded for the tests to run.","type":"string"},"cypress":{"description":"Contains details specific to the Cypress project.","type":"object","properties":{"configFile":{"description":"The designated cypress configuration file.","type":"string","examples":["cypress.config.js"]},"key":{"description":"The secret key that grants permission to record your tests in the Cypress dashboard.","type":"string"},"record":{"description":"Whether to record your test results in the Cypress dashboard.","type":"boolean"},"version":{"enum":["package.json","14.3.2","14.1.0","14.0.0","13.16.0","13.15.2","13.15.1","13.14.2","13.13.3","13.13.1","13.12.0","13.10.0"],"description":"Which framework version to use."}},"required":["configFile","version"],"additionalProperties":false},"env":{"description":"Set one or more environment variables. Values can be environment variables themselves. Not supported when running espresso/xcuitest!","type":"object"},"suites":{"description":"The set of properties providing details about the test suites to run.","type":"array","minItems":1,"items":{"type":"object","properties":{"name":{"description":"The name of the test suite, which will be reflected in the test results in Sauce Labs.","type":"string"},"browser":{"enum":["chrome","firefox","microsoftedge","webkit"],"description":"The name of the browser in which to run the tests."},"browserVersion":{"description":"Which version of the browser to use.","type":"string"},"platformName":{"enum":["macOS 11.00","macOS 12","macOS 13","Windows 10","Windows 11"],"description":"A specific operating system on which to run the tests. Sauce Labs will try to choose a reasonable default if not explicitly specified."},"screenResolution":{"description":"Specifies a browser window screen resolution, which may be useful if you are attempting to simulate a browser on a particular device type.","type":"string"},"config":{"description":"Provides details related to the Cypress test configuration.","type":"object","properties":{"testingType":{"description":"Specify the type of tests to execute; either e2e or component. Defaults to e2e","enum":["e2e","component"],"default":"e2e"},"specPattern":{"description":"One or more paths to the Cypress test files to run for this suite.","type":"array"},"excludeSpecPattern":{"description":"Exclude test files for this suite.","type":"array"},"env":{"$ref":"#/allOf/0/then/properties/env"}},"required":["specPattern"]},"shard":{"description":"When sharding is configured, saucectl automatically splits the tests (e.g. by spec or concurrency) so that they can easily run in parallel.","enum":["","concurrency","spec"]},"shardGrepEnabled":{"description":"When sharding is configured and the suite is configured to filter using cypress-grep, let saucectl filter tests before executing.","type":"boolean"},"headless":{"description":"Controls whether or not tests are run in headless mode (default: false)","type":"boolean"},"timeout":{"$ref":"#/allOf/0/then/properties/defaults/properties/timeout"},"preExec":{"description":"Specifies which commands to execute before starting the tests.","type":"array"},"timeZone":{"description":"Specifies the timeZone for the suite.","type":"string"},"passThreshold":{"description":"The minimum number of successful attempts for a suite to be considered as 'passed'.","type":"integer","minimum":1},"smartRetry":{"description":"Optimize suite retries by configuring the strategy.","type":"object","properties":{"failedOnly":{"description":"Optimize suite retries by retrying failed tests, classes or spec files only.","type":"boolean","default":false}}}},"required":["name","browser","config"],"additionalProperties":false}}},"required":["apiVersion","kind","cypress","suites"],"additionalProperties":true}},{"if":{"properties":{"kind":{"const":"espresso"}}},"then":{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"saucectl espresso runner configuration","description":"Configuration file for espresso using saucectl","type":"object","allOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"saucectl sauce specific schema","description":"Subschema for sauce specific settings","type":"object","properties":{"sauce":{"description":"All settings related to how tests are run and identified in the Sauce Labs platform.","type":"object","properties":{"concurrency":{"description":"Sets the maximum number of suites to execute at the same time. Excess suites are queued and run in order as each suite completes.","type":"integer","minimum":1},"metadata":{"description":"The set of properties that allows you to provide additional information about your project that helps you distinguish it in the various environments in which it is used and reviewed.","type":"object","properties":{"build":{"description":"Sauce Labs can aggregate all jobs under one view based on their association with a build.","type":"string"},"tags":{"description":"Tag your jobs so you can find them easier in Sauce Labs.","type":"array"}},"additionalProperties":false},"region":{"description":"Which Sauce Labs data center to target.","enum":["us-west-1","us-east-4","eu-central-1"]},"sauceignore":{"description":"Path to the .sauceignore file.","default":".sauceignore"},"tunnel":{"description":"SauceCTL supports using Sauce Connect to establish a secure connection when running your tests on Sauce Labs. To do so, launch a tunnel; then provide the identifier in this property.","properties":{"name":{"description":"The tunnel name.","type":"string"},"owner":{"description":"The owner (username) of the tunnel. Must be specified if the user that created the tunnel differs from the user that is running the tests.","type":"string"},"timeout":{"description":"How long to wait for the specified tunnel to be ready. Supports duration values like '10s', '30m' etc.","type":"string","pattern":"^(?:\\d+h)?(?:\\d+m)?(?:\\d+s)?(?:\\d+ms)?$","examples":["1m","30s"]}},"required":["name"],"additionalProperties":false},"retries":{"description":"The number of times to retry a failing suite.","type":"integer","minimum":0},"visibility":{"description":"Set the visibility level of test results for suites run on Sauce Labs.","default":"team","type":"string","oneOf":[{"const":"public","title":"Accessible to everyone."},{"const":"public restricted","title":"Share your test's results page and video, but keeps the logs only for you."},{"const":"share","title":"Only accessible to people with a valid link."},{"const":"team","title":"Only accessible to people under the same root account as you."},{"const":"private","title":"Only you (the owner) will be able to view assets and test results page."}]},"launchOrder":{"description":"Control starting order of suites. The default is the order in which suites are written in the config file.","type":"string","oneOf":[{"const":"fail rate","title":"Suites that historically have the highest failure rate start first."}]}},"additionalProperties":false}},"additionalProperties":true},{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"saucectl artifacts schema","description":"Subschema for controlling artifacts","type":"object","properties":{"artifacts":{"description":"Manage test output, such as logs, videos, and screenshots.","type":"object","properties":{"cleanup":{"description":"Whether to remove all contents of artifacts directory","type":"boolean"},"download":{"description":"Settings related to downloading test artifacts from Sauce Labs.","type":"object","properties":{"match":{"description":"Specifies which artifacts to download based on whether they match the file pattern provided. Supports the wildcard character '*'.","type":"array"},"when":{"description":"Specifies when and under what circumstances to download artifacts.","enum":["always","fail","never","pass"]},"directory":{"description":"Specifies the path to the folder in which to download artifacts. A separate subdirectory is generated in this location for each suite.","type":"string"},"allAttempts":{"description":"If true and a test is retried, artifacts for every attempt will be downloaded. Otherwise, only artifacts for the final attempt will be downloaded.","type":"boolean"}},"required":["when","match","directory"],"additionalProperties":false},"retain":{"description":"Compress folders into zip files, which can then be downloaded as artifacts.","type":"object","additionalProperties":{"type":"string"}}},"additionalProperties":false}},"additionalProperties":true},{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"saucectl reporters specific schema","description":"Subschema for reporters specific settings","type":"object","properties":{"reporters":{"type":"object","properties":{"junit":{"type":"object","description":"The JUnit reporter merges test results from all jobs in the JUnit format into a single report.","properties":{"enabled":{"description":"Toggles the reporter on/off.","type":"boolean"},"filename":{"description":"Filename for the generated JUnit report.","type":"string","default":"saucectl-report.xml"}}},"json":{"type":"object","description":"The JSON reporter merges test results from all jobs in the JSON format into a single report.","properties":{"enabled":{"description":"Toggles the reporter on/off.","type":"boolean"},"webhookURL":{"description":"Webhook URL to pass JSON report.","type":"string"},"filename":{"description":"Filename for the generated JSON report.","type":"string","default":"saucectl-report.json"}}},"spotlight":{"type":"object","description":"The spotlight reporter prints an overview of failed, or otherwise interesting, jobs.","properties":{"enabled":{"description":"Toggles the reporter on/off.","type":"boolean"}}}},"additionalProperties":false}},"additionalProperties":true}],"properties":{"apiVersion":{"const":"v1alpha"},"kind":{"const":"espresso"},"showConsoleLog":{"description":"Shows suites console.log locally. By default console.log is only shown on failures.","type":"boolean"},"defaults":{"description":"Settings that are applied onto every suite by default, if no value is set on a suite explicitly.","type":"object","properties":{"timeout":{"description":"Instructs how long (in ms, s, m, or h) saucectl should wait for a suite to complete.","type":"string","pattern":"^(?:\\d+h)?(?:\\d+m)?(?:\\d+s)?(?:\\d+ms)?$","examples":["1h","10m","90s"]}},"additionalProperties":false},"espresso":{"description":"Contains details specific to the Espresso project.","type":"object","properties":{"app":{"description":"Local path or remote url to the application. If a remote url is defined, the app will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values.","type":"string"},"appDescription":{"description":"Description for the app","type":"string"},"testApp":{"description":"Local path or remote url to the test application. If a remote url is defined, the app will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values.","type":"string"},"testAppDescription":{"description":"Description for the testApp","type":"string"},"otherApps":{"description":"A list of applications to be installed alongside the main app. Applications can be defined as a local path or a remote url. If a remote url is defined, the app will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values.","type":"array","maxItems":7}},"required":["app","testApp"],"additionalProperties":false},"suites":{"description":"The set of properties providing details about the test suites to run.","type":"array","minItems":1,"items":{"type":"object","properties":{"name":{"description":"The name of the test suite, which will be reflected in the test results in Sauce Labs.","type":"string"},"testApp":{"description":"Local path or remote url to the test application. If a remote url is defined, the app will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values.","type":"string"},"testAppDescription":{"description":"Description for the testApp","type":"string"},"testOptions":{"description":"Allows you to control various details on how tests are executed.","type":"object","properties":{"class":{"description":"Only run the specified classes.","type":"array"},"notClass":{"description":"Run all classes except those specified here.","type":"array"},"func":{"description":"Run all test classes that extend InstrumentationTestCase.","type":"boolean"},"unit":{"description":"Run all test classes that do not extend either InstrumentationTestCase or PerformanceTestCase.","type":"boolean"},"perf":{"description":"Run all test classes that extend PerformanceTestCase.","type":"boolean"},"package":{"description":"Only run tests in the specified package.","type":"string"},"notPackage":{"description":"Run all tests except those in this package.","type":"string"},"size":{"description":"Run only tests that are annotated with the matching size value.","enum":["small","medium","large"]},"annotation":{"description":"Only run tests with this annotation.","type":"string"},"notAnnotation":{"description":"Run all tests except those with this annotation.","type":"string"},"filter":{"description":"Only run tests that pass all of the custom filters.","type":"array","examples":[["com.android.foo.MyCustomFilter","com.android.foo.MyOtherCustomFilter"]]},"runnerBuilder":{"description":"Use custom builders to run tests.","type":"array","examples":[["com.android.foo.MyCustomBuilder","com.android.foo.MyOtherCustomBuilder"]]},"listener":{"description":"Observe the test run with one or more RunListener.","type":"array","examples":[["com.android.foo.MyRunListener","com.android.foo.MyOtherRunListener"]]},"newRunListenerMode":{"description":"Use the new list of RunListeners during a test run.","type":"boolean"},"numShards":{"description":"When sharding is configured, saucectl automatically creates the sharded jobs for each of the devices defined for the suite based on the number of shards you specify. For example, for a suite testing a single emulator version that specifies 2 shards, saucectl clones the suite and runs one shard index on the first suite, and the other shard index on the identical clone suite.","type":"integer","minimum":0},"clearPackageData":{"description":"Removes all shared states from the testing device's CPU and memory at the completion of each test. Real devices only. Has to be used in conjunction with the 'useTestOrchestrator' flag.","type":"boolean"},"useTestOrchestrator":{"description":"Run each of your tests in its own Instrumentation instance to remove most of the app's shared state from the device CPU and memory between tests. Real devices only. Use this setting in conjunction with clearPackageData: true to completely remove all shared state.","type":"boolean"}},"dependencies":{"clearPackageData":["useTestOrchestrator"]},"additionalProperties":true},"emulators":{"description":"Defines details for running this suite on virtual devices using an emulator.","type":"array","items":{"properties":{"name":{"description":"The name of the emulator. To ensure name accuracy, check the list of supported virtual devices (https://app.saucelabs.com/live/web-testing/virtual).","type":"string"},"orientation":{"description":"The screen orientation to use.","enum":["landscape","portrait"]},"platformVersions":{"description":"The set of one or more versions of the device platform on which to run the test suite.","type":"array","minItems":1}},"required":["name","platformVersions"],"additionalProperties":false}},"devices":{"description":"Define details for running this suite on real devices.","type":"array","items":{"properties":{"id":{"description":"Request a specific device for this test suite by its ID. You can look up device IDs in the Sauce Labs app or using our Devices API (https://docs.saucelabs.com/dev/api/rdc#get-devices).","type":"string","examples":["Google_Pixel_5_real","Google_Pixel_5_real_us"]},"name":{"description":"Match the device name in full or partially (regex), which may provide a larger pool of available devices of the type you want.","type":"string","examples":["Google Pixel .*","Samsung .*"]},"platformVersion":{"description":"The version of the Android operating system.","type":"string"},"options":{"description":"Further specify desired device attributes within the pool of devices that match the name and version criteria.","type":"object","properties":{"carrierConnectivity":{"description":"Limit the device selection to those that are connected to a cellular network.","type":"boolean"},"deviceType":{"description":"Limit the device selection to a specific type of device.","enum":["ANY","PHONE","TABLET"]},"private":{"description":"Limit the device selection to only match from your organization's private pool.","type":"boolean"}},"additionalProperties":false}},"oneOf":[{"required":["id"]},{"required":["name"]}],"additionalProperties":false}},"timeout":{"$ref":"#/allOf/1/then/properties/defaults/properties/timeout"},"appSettings":{"description":"Configure real device settings.","type":"object","properties":{"resigningEnabled":{"description":"Configure app settings for real device to enable app resigning.","type":"boolean"},"audioCapture":{"description":"Configure app settings for real device to capture audio.","type":"boolean"},"instrumentation":{"description":"Configure app settings for real device instrumentation.","type":"object","properties":{"imageInjection":{"description":"Configure app settings for real device to inject provided images in the user app.","type":"boolean"},"bypassScreenshotRestriction":{"description":"Configure app settings for real device to enable bypassing of screenshot restriction.","type":"boolean"},"vitals":{"description":"Configure app settings for real device to enable vitals.","type":"boolean"},"networkCapture":{"description":"Configure app settings for real device to capture network.","type":"boolean"},"biometrics":{"description":"Configure app settings for real device to intercept biometric authentication.","type":"boolean"}}}}},"passThreshold":{"description":"The minimum number of successful attempts for a suite to be considered as 'passed'.","type":"integer","minimum":1},"smartRetry":{"description":"Optimize suite retries by configuring the strategy.","type":"object","properties":{"failedOnly":{"description":"Optimize suite retries by retrying failed tests, classes or spec files only.","type":"boolean","default":false}}}},"anyOf":[{"required":["emulators"]},{"required":["devices"]}],"required":["name"],"additionalProperties":false}}},"required":["apiVersion","kind","espresso","suites"],"additionalProperties":true}},{"if":{"properties":{"kind":{"const":"playwright"}}},"then":{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"saucectl playwright runner configuration","description":"Configuration file for playwright using saucectl","type":"object","allOf":[{"$ref":"#/allOf/1/then/allOf/1"},{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"saucectl npm specific schema","description":"Subschema for npm specific settings","type":"object","properties":{"npm":{"description":"Settings specific to npm.","type":"object","properties":{"usePackageLock":{"type":"boolean","description":"Specifies whether to use the project's package-lock.json when installing npm dependencies. If true, package-lock.json will be used during installation which will improve the speed of installation."},"packages":{"description":"Specifies any npm packages that are required to run tests.","type":"object"},"dependencies":{"description":"Specify local npm dependencies for saucectl to upload. These dependencies must already be installed in the local node_modules directory.","type":"array"},"registry":{"description":"Override the default and official NPM registry URL with a custom one.","type":"string","deprecated":true},"strictSSL":{"description":"Whether or not to do SSL key validation when making requests to the registry via https.","type":"boolean"},"registries":{"description":"Specify all the registries you want to configure","type":"array","minimum":0,"items":{"type":"object","properties":{"scope":{"description":"Scope for the registry entry","type":"string"},"url":{"description":"URL for the registry entry","type":"string"},"authToken":{"description":"Authentication token for the registry entry","type":"string"},"auth":{"description":"Base64-encoded authentication string for the registry entry","type":"string"},"username":{"description":"Username for authentication with the registry","type":"string"},"password":{"description":"Password for authentication with the registry","type":"string"},"email":{"description":"Email for authentication with the registry","type":"string"}},"required":["url"]}}},"additionalProperties":false}},"additionalProperties":true},{"$ref":"#/allOf/1/then/allOf/0"},{"$ref":"#/allOf/1/then/allOf/2"}],"properties":{"apiVersion":{"const":"v1alpha"},"kind":{"const":"playwright"},"nodeVersion":{"description":"Specifies the Node.js version for Sauce Cloud. Supports SemVer notation and aliases.","examples":["v20","iron","lts"]},"showConsoleLog":{"$ref":"#/allOf/1/then/properties/showConsoleLog"},"defaults":{"description":"Settings that are applied onto every suite by default, if no value is set on a suite explicitly.","type":"object","properties":{"timeout":{"$ref":"#/allOf/1/then/properties/defaults/properties/timeout"}},"additionalProperties":false},"env":{"description":"Set one or more environment variables. Values can be environment variables themselves. Not supported when running espresso/xcuitest!","type":"object"},"rootDir":{"description":"The directory of files that need to be bundled and uploaded for the tests to run.","type":"string"},"playwright":{"description":"Contains details specific to the Playwright project.","type":"object","properties":{"version":{"$ref":"#/allOf/8/then/properties/playwright/properties/version","enum":["package.json","1.52.0","1.50.1","1.49.1","1.49.0","1.48.2","1.47.2","1.46.1","1.45.2","1.45.0","1.44.0","1.43.1","1.41.2"]},"configFile":{"description":"The path to playwright config file","type":"string"}},"required":["version"],"additionalProperties":false},"suites":{"description":"The set of properties providing details about the test suites to run.","type":"array","minItems":1,"items":{"type":"object","properties":{"name":{"description":"The name of the test suite, which will be reflected in the test results in Sauce Labs.","type":"string"},"playwrightVersion":{"$ref":"#/allOf/8/then/properties/playwright/properties/version"},"testMatch":{"description":"Paths to the playwright test files. Regex values are supported to indicate all files of a certain type or in a certain directory, etc.","type":"array"},"excludedTestFiles":{"description":"Exclude test files to skip the tests.","type":"array"},"platformName":{"$ref":"#/allOf/3/then/properties/suites/items/properties/platform","enum":["macOS 11.00","macOS 12","macOS 13","Windows 10","Windows 11"]},"params":{"description":"Details any additional parameters you wish to set for the test suite.","type":"object","properties":{"browserName":{"$ref":"#/allOf/8/then/properties/suites/items/properties/browserName","enum":["chromium","firefox","webkit","chrome"]},"headless":{"description":"Run tests in headless mode.","type":"boolean"},"globalTimeout":{"description":"Total timeout in milliseconds for the whole test run.","type":"integer"},"timeout":{"description":"Changes the timeout for the test (milliseconds).","type":"integer"},"grep":{"description":"Patterns to run tests based on their title.","type":"string"},"grepInvert":{"description":"Patterns to skip tests based on their title.","type":"string"},"repeatEach":{"description":"The number of times to repeat each test.","type":"integer","minimum":0},"retries":{"description":"The maximum number of retry attempts given to failed tests.","type":"integer","minimum":0},"maxFailures":{"description":"The maximum number of test failures for this test run. After reaching this number, testing will stop and exit with an error. Setting to zero (default) disables this behavior.","type":"integer","minimum":0},"project":{"description":"Specify playwright project","type":"string"},"updateSnapshots":{"description":"Whether to update expected snapshots with the actual results produced by the test run","type":"boolean"},"workers":{"description":"Set the maximum number of parallel worker processes (default: 1)","type":"integer","minimum":1}},"required":["browserName"]},"screenResolution":{"description":"Specifies a browser window screen resolution, which may be useful if you are attempting to simulate a browser on a particular device type.","type":"string"},"env":{"$ref":"#/allOf/2/then/properties/env"},"numShards":{"description":"When sharding is configured, saucectl automatically creates the sharded jobs based on the number of shards you specify. For example, for a suite that specifies 2 shards, saucectl clones the suite and runs shard 1/2 on the first suite, and the other shard 2/2 on the identical clone suite.","type":"integer","minimum":0},"shard":{"description":"When sharding is configured, saucectl automatically splits the tests (e.g. by spec or concurrency) so that they can easily run in parallel.","enum":["","concurrency","spec"]},"shardGrepEnabled":{"description":"When sharding is configured and the suite is configured to filter using grep/grepInvert, let saucectl filter specs before executing.","type":"boolean"},"timeout":{"$ref":"#/allOf/1/then/properties/defaults/properties/timeout"},"preExec":{"description":"Specifies which commands to execute before starting the tests.","type":"array"},"timeZone":{"description":"Specifies the timeZone for the suite.","type":"string"},"passThreshold":{"$ref":"#/allOf/1/then/properties/suites/items/properties/passThreshold"},"smartRetry":{"$ref":"#/allOf/1/then/properties/suites/items/properties/smartRetry"}},"required":["name","params","testMatch"],"additionalProperties":false}}},"required":["apiVersion","kind","playwright","suites"],"additionalProperties":true}},{"if":{"properties":{"kind":{"const":"puppeteer-replay"}}},"then":{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"saucectl puppeteer-replay runner configuration","description":"Configuration file for puppeteer-replay using saucectl","type":"object","allOf":[{"$ref":"#/allOf/1/then/allOf/1"},{"$ref":"#/allOf/1/then/allOf/0"}],"properties":{"apiVersion":{"const":"v1alpha"},"kind":{"const":"puppeteer-replay"},"showConsoleLog":{"$ref":"#/allOf/1/then/properties/showConsoleLog"},"defaults":{"description":"Settings that are applied onto every suite by default, if no value is set on a suite explicitly.","type":"object","properties":{"timeout":{"$ref":"#/allOf/1/then/properties/defaults/properties/timeout"}},"additionalProperties":false},"suites":{"description":"The set of properties providing details about the test suites to run.","type":"array","minItems":1,"items":{"type":"object","properties":{"name":{"description":"The name of the test suite, which will be reflected in the test results in Sauce Labs.","type":"string"},"recordings":{"description":"Relative paths to the chrome devtools recordings.","type":"array"},"browserName":{"$ref":"#/allOf/8/then/properties/suites/items/properties/browserName","enum":["chrome"]},"browserVersion":{"description":"Which version of the browser to use.","type":"string"},"platform":{"enum":["macOS 11.00","macOS 12","macOS 13","Windows 10","Windows 11"],"description":"A specific operating system on which to run the tests. Sauce Labs will try to choose a reasonable default if not explicitly specified."},"timeout":{"$ref":"#/allOf/1/then/properties/defaults/properties/timeout"},"passThreshold":{"$ref":"#/allOf/1/then/properties/suites/items/properties/passThreshold"}},"required":["name","recordings"],"additionalProperties":false}}},"required":["apiVersion","kind","suites"],"additionalProperties":true}},{"if":{"properties":{"kind":{"const":"testcafe"}}},"then":{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"saucectl testcafe runner configuration","description":"Configuration file for testcafe using saucectl","type":"object","allOf":[{"$ref":"#/allOf/1/then/allOf/1"},{"$ref":"#/allOf/2/then/allOf/1"},{"$ref":"#/allOf/1/then/allOf/0"},{"$ref":"#/allOf/1/then/allOf/2"}],"properties":{"apiVersion":{"const":"v1alpha"},"kind":{"const":"testcafe"},"nodeVersion":{"$ref":"#/allOf/2/then/properties/nodeVersion"},"showConsoleLog":{"$ref":"#/allOf/1/then/properties/showConsoleLog"},"defaults":{"description":"Settings that are applied onto every suite by default, if no value is set on a suite explicitly.","type":"object","properties":{"timeout":{"$ref":"#/allOf/1/then/properties/defaults/properties/timeout"}},"additionalProperties":false},"env":{"$ref":"#/allOf/2/then/properties/env"},"rootDir":{"$ref":"#/allOf/2/then/properties/rootDir"},"testcafe":{"description":"Contains details specific to the TestCafe project.","type":"object","properties":{"version":{"$ref":"#/allOf/8/then/properties/playwright/properties/version","enum":["package.json","3.7.2","3.7.1","3.7.0","3.6.2","3.6.1","3.6.0","3.5.0"]},"configFile":{"description":"The TestCafe configuration file.","type":"string","examples":["testcaferc.json","testcaferc.js","testcaferc.cjs"]}},"required":["version"],"additionalProperties":false},"suites":{"description":"The set of properties providing details about the test suites to run.","type":"array","minItems":1,"items":{"type":"object","properties":{"name":{"description":"The name of the test suite, which will be reflected in the test results in Sauce Labs.","type":"string"},"browserName":{"$ref":"#/allOf/8/then/properties/suites/items/properties/browserName","enum":["chrome","firefox","microsoftedge","safari"]},"browserVersion":{"$ref":"#/allOf/3/then/properties/suites/items/properties/browserVersion"},"browserArgs":{"description":"Browser specific arguments.","type":"array","examples":[["--no-sandbox"],["--disable-features=site-per-process"]]},"headless":{"description":"Controls whether or not tests are run in headless mode (default: false)","type":"boolean"},"platformName":{"$ref":"#/allOf/3/then/properties/suites/items/properties/platform","enum":["macOS 11.00","macOS 12","macOS 13","Windows 10","Windows 11"]},"assertionTimeout":{"description":"Specifies the time (in milliseconds) TestCafe attempts to successfully execute an assertion if a selector property or a client function was passed as an actual value.","type":"integer","minimum":0},"clientScripts":{"description":"Injects scripts into pages visited during the tests.","type":"array"},"env":{"$ref":"#/allOf/2/then/properties/env"},"shard":{"description":"When sharding is configured, saucectl automatically splits the tests (e.g. by spec or concurrency) so that they can easily run in parallel.","enum":["","concurrency","spec"]},"compilerOptions":{"description":"Specifies the typescript compiler options to be used when running the tests.","type":"object","properties":{"typescript":{"description":"Specifies the TypeScript options.","type":"object","properties":{"configPath":{"description":"Specifies the path to the TypeScript tsconfig.json file.","type":"string"},"customCompilerModulePath":{"description":"Specifies the path to a custom TypeScript compiler module.","type":"string"},"options":{"description":"Specifies TypeScript compiler options. Full reference: https://www.typescriptlang.org/tsconfig#compilerOptions","type":"object","additionalProperties":true}}}}},"disablePageCaching":{"description":"Prevents the browser from caching page content.","type":"boolean"},"disableScreenshots":{"description":"Prevents TestCafe from taking screenshots.","type":"boolean"},"disableVideo":{"description":"Disable video recording.","type":"boolean"},"filter":{"description":"Allows you to specify which tests or fixtures to run.","type":"object","properties":{"test":{"description":"Runs a test with the specified name.","type":"string"},"testGrep":{"description":"Runs tests whose names match the specified grep pattern.","type":"string"},"testMeta":{"description":"Runs tests whose metadata matches the specified key-value pair.","type":"object"},"fixture":{"description":"Runs a test with the specified fixture name.","type":"string"},"fixtureGrep":{"description":"Runs tests whose fixture names match the specified grep pattern.","type":"string"},"fixtureMeta":{"description":"Runs tests whose fixture\u2019s metadata matches the specified key-value pair.","type":"object"}}},"pageLoadTimeout":{"description":"Specifies the time (in milliseconds) passed after the DOMContentLoaded event, within which TestCafe waits for the window.load event to fire.\n\nAfter the timeout passes or the window.load event is raised (whichever happens first), TestCafe starts the test.","type":"integer","minimum":0},"quarantineMode":{"description":"Enable quarantine mode to eliminate false negatives and detect unstable tests. TestCafe quarantines tests that fail, and repeats them until they yield conclusive results.","type":"object","properties":{"successThreshold":{"description":"The number of successful attempts necessary to confirm a test\u2019s success. The option value should be greater than 0.","type":"integer","default":3},"attemptLimit":{"description":"The maximum number of test execution attempts. The option value must be larger than the value of the successThreshold.","type":"integer","default":5}}},"screenResolution":{"$ref":"#/allOf/2/then/properties/suites/items/properties/screenResolution"},"screenshots":{"description":"Allows you to specify the screenshot options.","type":"object","properties":{"takeOnFails":{"description":"Specifies that a screenshot should be taken whenever a test fails.","type":"boolean"},"fullPage":{"description":"Specifies that the full page should be captured, including content that is not visible due to overflow.","type":"boolean"}},"additionalProperties":false},"selectorTimeout":{"description":"Specifies the time (in milliseconds) within which selectors attempt to return a node.","type":"integer","minimum":0},"ajaxRequestTimeout":{"description":"Specifies wait time (in milliseconds) for fetch/XHR requests.","type":"integer","minimum":0},"pageRequestTimeout":{"description":"Specifies time (in milliseconds) to wait for HTML pages.","type":"integer","minimum":0},"browserInitTimeout":{"description":"Time (in milliseconds) for browsers to connect to TestCafe and report that they are ready to test.","type":"integer","minimum":0},"testExecutionTimeout":{"description":"Maximum test execution time (in milliseconds).","type":"integer","minimum":0},"runExecutionTimeout":{"description":"Maximum test run execution time (in milliseconds).","type":"integer","minimum":0},"simulators":{"description":"Run tests against the simulators defined here.","type":"array","items":{"properties":{"name":{"description":"The name of the simulator.","type":"string","examples":["iPhone 12 Simulator"]},"orientation":{"$ref":"#/allOf/1/then/properties/suites/items/properties/emulators/items/properties/orientation"},"platformName":{"description":"The name of the simulator platform.","enum":["iOS"]},"platformVersions":{"description":"Which platform versions (OS versions) should be used. Multiple values are treated as 'AND', thus tests run across multiple versions.","type":"array"}},"additionalProperties":false}},"skipJsErrors":{"description":"Determines whether to ignore JavaScript errors on a webpage.","type":"boolean"},"skipUncaughtErrors":{"description":"Ignores uncaught errors and unhandled promise rejections in test code.","type":"boolean"},"speed":{"description":"Specifies the test execution speed. Provide a number between 1 (the fastest) and 0.01 (the slowest).","type":"number","minimum":0.01,"maximum":1},"src":{"description":"Specifies files or directories from which to run tests.","type":"array"},"stopOnFirstFail":{"description":"Stops a test run if a test fails.","type":"boolean"},"timeout":{"$ref":"#/allOf/1/then/properties/defaults/properties/timeout"},"preExec":{"$ref":"#/allOf/2/then/properties/suites/items/properties/preExec"},"excludedTestFiles":{"$ref":"#/allOf/2/then/properties/suites/items/properties/excludedTestFiles"},"timeZone":{"$ref":"#/allOf/2/then/properties/suites/items/properties/timeZone"},"passThreshold":{"$ref":"#/allOf/1/then/properties/suites/items/properties/passThreshold"},"smartRetry":{"$ref":"#/allOf/1/then/properties/suites/items/properties/smartRetry"},"esm":{"description":"Enables importing ECMAScript Modules (ESM) that don't support CommonJS.","type":"boolean"}},"required":["name","browserName","src"],"additionalProperties":false}}},"required":["apiVersion","kind","testcafe","suites"],"additionalProperties":true}},{"if":{"properties":{"kind":{"const":"xcuitest"}}},"then":{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"saucectl xcuitest runner configuration","description":"Configuration file for xcuitest using saucectl","type":"object","allOf":[{"$ref":"#/allOf/1/then/allOf/0"},{"$ref":"#/allOf/1/then/allOf/1"},{"$ref":"#/allOf/1/then/allOf/2"}],"properties":{"apiVersion":{"const":"v1alpha"},"kind":{"const":"xcuitest"},"showConsoleLog":{"$ref":"#/allOf/1/then/properties/showConsoleLog"},"defaults":{"description":"Settings that are applied onto every suite by default, if no value is set on a suite explicitly.","type":"object","properties":{"timeout":{"$ref":"#/allOf/1/then/properties/defaults/properties/timeout"}},"additionalProperties":false},"env":{"$ref":"#/allOf/2/then/properties/env"},"xcuitest":{"description":"Contains details specific to the XCUITest project.","type":"object","properties":{"app":{"description":"Local path or remote url to the application. If a remote url is defined, the app will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values.","type":"string"},"appDescription":{"description":"Description for the app.","type":"string"},"testApp":{"description":"Local path or remote url to the test application. If a remote url is defined, the app will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values.","type":"string"},"testAppDescription":{"description":"Description for the testApp.","type":"string"},"otherApps":{"description":"A list of applications to be installed alongside the main app. Applications can be defined as a local path or a remote url. If a remote url is defined, the app will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values. When targeting simulators, a maximum of 2 otherApps is supported.","type":"array"}},"additionalProperties":false},"suites":{"description":"The set of properties providing details about the test suites to run.","type":"array","minItems":1,"items":{"type":"object","properties":{"name":{"description":"The name of the test suite, which will be reflected in the test results in Sauce Labs.","type":"string"},"app":{"description":"Local path or remote url to the application. If a remote url is defined, the app will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values.","type":"string"},"appDescription":{"description":"Description for the app.","type":"string"},"testApp":{"description":"Local path or remote url to the test application. If a remote url is defined, the app will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values.","type":"string"},"testAppDescription":{"description":"Description for the testApp.","type":"string"},"otherApps":{"description":"A list of applications to be installed alongside the main app. Applications can be defined as a local path or a remote url. If a remote url is defined, the app will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values. When targeting simulators, a maximum of 2 otherApps is supported.","type":"array"},"env":{"$ref":"#/allOf/2/then/properties/env"},"testOptions":{"description":"Allows you to control various details on how tests are executed.","type":"object","properties":{"class":{"description":"Only run the specified classes.","type":"array"},"notClass":{"description":"Run all classes except those specified here.","type":"array"},"testLanguage":{"description":"Specifies ISO 639-1 language during testing. Supported on Simulators only.","type":"string"},"testRegion":{"description":"Specifies ISO 3166-1 region during testing.","type":"string"},"testTimeoutsEnabled":{"description":"By default there is no timeout, if enabled, then the timeout is 600 seconds. This can be changed by adding the defaultTestExecutionTimeAllowance value. Supported on Simulators only.","type":"string","enum":["Yes","No"]},"maximumTestExecutionTimeAllowance":{"description":"The maximum execution time, in seconds, an individual test is given to execute, regardless of the test's preferred allowance. Supported on Simulators only.","type":"number"},"defaultTestExecutionTimeAllowance":{"description":"The default execution time, in seconds, an individual test is given to execute if test timeouts are enabled. Supported on Simulators only.","type":"number"},"statusBarOverrideTime":{"description":"Modify the time displayed on the status bar. Supported on Simulators only.","type":"string"}},"additionalProperties":false},"appSettings":{"description":"Configure real device settings.","type":"object","properties":{"resigningEnabled":{"description":"Configure app settings for real device to enable app resigning.","type":"boolean"},"audioCapture":{"description":"Configure app settings for real device to capture audio.","type":"boolean"},"instrumentation":{"description":"Configure app settings for real device instrumentation.","type":"object","properties":{"imageInjection":{"description":"Configure app settings for real device to inject provided images in the user app.","type":"boolean"},"sysAlertsDelay":{"description":"Configure app settings for real device to delay system alerts.","type":"boolean"},"vitals":{"description":"Configure app settings for real device to enable vitals.","type":"boolean"},"networkCapture":{"description":"Configure app settings for real device to capture network.","type":"boolean"},"biometrics":{"description":"Configure app settings for real device to intercept biometric authentication.","type":"boolean"},"groupDirectory":{"description":"Configure app settings for real device to enable group directory access.","type":"boolean"}}}}},"simulators":{"description":"Defines details for running this suite on virtual devices using a simulator.","type":"array","items":{"properties":{"name":{"description":"The name of the simulator. To ensure name accuracy, check the list of supported virtual devices (https://app.saucelabs.com/live/web-testing/virtual).","type":"string"},"orientation":{"$ref":"#/allOf/1/then/properties/suites/items/properties/emulators/items/properties/orientation"},"platformVersions":{"description":"The set of one or more versions of the device platform on which to run the test suite.","type":"array","minItems":1},"armRequired":{"description":"If set to true, the simulator will run on an ARM-based Mac. If set to false, the simulator will run on an Intel-based Mac.","type":"boolean"}},"required":["name","platformVersions"],"additionalProperties":false}},"devices":{"description":"Define details for running this suite on real devices.","type":"array","items":{"properties":{"id":{"description":"Request a specific device for this test suite by its ID. You can look up device IDs in the Sauce Labs app or using our Devices API (https://docs.saucelabs.com/dev/api/rdc#get-devices).","type":"string","examples":["iPhone_12_Pro_14_real","iPhone_12_Pro_real_us"]},"name":{"description":"Match the device name in full or partially (regex), which may provide a larger pool of available devices of the type you want.","type":"string","examples":["iPad .*","iPhone .*"]},"platformVersion":{"description":"The version of the iOS operating system.","type":"string"},"options":{"description":"Further specify desired device attributes within the pool of devices that match the name and version criteria.","type":"object","properties":{"carrierConnectivity":{"description":"Limit the device selection to those that are connected to a cellular network.","type":"boolean"},"deviceType":{"description":"Limit the device selection to a specific type of device.","enum":["ANY","PHONE","TABLET"]},"private":{"description":"Limit the device selection to only match from your organization's private pool.","type":"boolean"}},"additionalProperties":false}},"oneOf":[{"required":["id"]},{"required":["name"]}],"additionalProperties":false}},"timeout":{"$ref":"#/allOf/1/then/properties/defaults/properties/timeout"},"passThreshold":{"$ref":"#/allOf/1/then/properties/suites/items/properties/passThreshold"},"smartRetry":{"$ref":"#/allOf/1/then/properties/suites/items/properties/smartRetry"},"shard":{"description":"When sharding is configured, saucectl automatically splits the tests (e.g. by testList or concurrency) so that they can easily run in parallel.","enum":["","concurrency","testList"]},"testListFile":{"description":"This file containing tests will be used in sharding by concurrency.","type":"string"}},"anyOf":[{"required":["simulators"]},{"required":["devices"]}],"required":["name"],"additionalProperties":false}}},"required":["apiVersion","kind","suites"],"additionalProperties":true}},{"if":{"properties":{"kind":{"const":"xctest"}}},"then":{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"saucectl xctest runner configuration","description":"Configuration file for xctest using saucectl","type":"object","allOf":[{"$ref":"#/allOf/1/then/allOf/0"},{"$ref":"#/allOf/1/then/allOf/1"},{"$ref":"#/allOf/1/then/allOf/2"}],"properties":{"apiVersion":{"const":"v1alpha"},"kind":{"const":"xctest"},"showConsoleLog":{"$ref":"#/allOf/1/then/properties/showConsoleLog"},"defaults":{"description":"Settings that are applied onto every suite by default, if no value is set on a suite explicitly.","type":"object","properties":{"timeout":{"$ref":"#/allOf/1/then/properties/defaults/properties/timeout"}},"additionalProperties":false},"env":{"$ref":"#/allOf/2/then/properties/env"},"xctest":{"description":"Contains details specific to the XCTest project.","type":"object","properties":{"app":{"description":"Local path or remote url to the application. If a remote url is defined, the app will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values.","type":"string"},"appDescription":{"description":"Description for the app.","type":"string"},"xcTestRunFile":{"description":"Local path or remote url to the .xctestrun file test descriptor. If a remote url is defined, the file will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values.","type":"string"},"xcTestRunFileDescription":{"description":"Description for the xcTestRunFile.","type":"string"},"otherApps":{"description":"A list of applications to be installed alongside the main app. Applications can be defined as a local path or a remote url. If a remote url is defined, the app will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values. When targeting simulators, a maximum of 2 otherApps is supported.","type":"array"}},"additionalProperties":false},"suites":{"description":"The set of properties providing details about the test suites to run.","type":"array","minItems":1,"items":{"type":"object","properties":{"name":{"description":"The name of the test suite, which will be reflected in the test results in Sauce Labs.","type":"string"},"app":{"description":"Local path or remote url to the application. If a remote url is defined, the app will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values.","type":"string"},"appDescription":{"description":"Description for the app.","type":"string"},"xcTestRunFile":{"description":"Local path or remote url to the .xctestrun file test descriptor. If a remote url is defined, the file will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values.","type":"string"},"xcTestRunFileDescription":{"description":"Description for the xcTestRunFile.","type":"string"},"otherApps":{"description":"A list of applications to be installed alongside the main app. Applications can be defined as a local path or a remote url. If a remote url is defined, the app will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values. When targeting simulators, a maximum of 2 otherApps is supported.","type":"array"},"env":{"$ref":"#/allOf/2/then/properties/env"},"testOptions":{"description":"Allows you to control various details on how tests are executed.","type":"object","properties":{"class":{"description":"Only run the specified classes.","type":"array"},"notClass":{"description":"Run all classes except those specified here.","type":"array"},"testLanguage":{"description":"Specifies ISO 639-1 language during testing. Supported on Simulators only.","type":"string"},"testRegion":{"description":"Specifies ISO 3166-1 region during testing.","type":"string"},"testTimeoutsEnabled":{"description":"By default there is no timeout, if enabled, then the timeout is 600 seconds. This can be changed by adding the defaultTestExecutionTimeAllowance value. Supported on Simulators only.","type":"string","enum":["Yes","No"]},"maximumTestExecutionTimeAllowance":{"description":"The maximum execution time, in seconds, an individual test is given to execute, regardless of the test's preferred allowance. Supported on Simulators only.","type":"number"},"defaultTestExecutionTimeAllowance":{"description":"The default execution time, in seconds, an individual test is given to execute if test timeouts are enabled. Supported on Simulators only.","type":"number"},"statusBarOverrideTime":{"description":"Modify the time displayed on the status bar. Supported on Simulators only.","type":"string"}},"additionalProperties":false},"appSettings":{"description":"Overwrite real device settings.","type":"object","properties":{"resigningEnabled":{"description":"Overwrite app settings for real device to enable app resigning.","type":"boolean"},"audioCapture":{"description":"Overwrite app settings for real device to capture audio.","type":"boolean"},"instrumentation":{"description":"Overwrite app settings for real device instrumentation.","type":"object","properties":{"imageInjection":{"description":"Overwrite app settings for real device to inject provided images in the user app.","type":"boolean"},"sysAlertsDelay":{"description":"Overwrite app settings for real device to delay system alerts.","type":"boolean"},"vitals":{"description":"Overwrite app settings for real device to enable vitals.","type":"boolean"},"networkCapture":{"description":"Overwrite app settings for real device to capture network.","type":"boolean"},"biometrics":{"description":"Overwrite app settings for real device to intercept biometric authentication.","type":"boolean"},"groupDirectory":{"description":"Overwrite app settings for real device to enable group directory access.","type":"boolean"}}}}},"devices":{"description":"Define details for running this suite on real devices.","type":"array","items":{"properties":{"id":{"description":"Request a specific device for this test suite by its ID. You can look up device IDs in the Sauce Labs app or using our Devices API (https://docs.saucelabs.com/dev/api/rdc#get-devices).","type":"string","examples":["iPhone_12_Pro_14_real","iPhone_12_Pro_real_us"]},"name":{"description":"Match the device name in full or partially (regex), which may provide a larger pool of available devices of the type you want.","type":"string","examples":["iPad .*","iPhone .*"]},"platformVersion":{"description":"The version of the iOS operating system.","type":"string"},"options":{"description":"Further specify desired device attributes within the pool of devices that match the name and version criteria.","type":"object","properties":{"carrierConnectivity":{"description":"Limit the device selection to those that are connected to a cellular network.","type":"boolean"},"deviceType":{"description":"Limit the device selection to a specific type of device.","enum":["ANY","PHONE","TABLET"]},"private":{"description":"Limit the device selection to only match from your organization's private pool.","type":"boolean"}},"additionalProperties":false}},"oneOf":[{"required":["id"]},{"required":["name"]}],"additionalProperties":false}},"timeout":{"$ref":"#/allOf/1/then/properties/defaults/properties/timeout"},"passThreshold":{"$ref":"#/allOf/1/then/properties/suites/items/properties/passThreshold"},"smartRetry":{"$ref":"#/allOf/1/then/properties/suites/items/properties/smartRetry"},"shard":{"description":"When sharding is configured, saucectl automatically splits the tests (e.g. by testList or concurrency) so that they can easily run in parallel.","enum":["","concurrency","testList"]},"testListFile":{"description":"This file containing tests will be used in sharding by concurrency.","type":"string"}},"anyOf":[{"required":["devices"]}],"required":["name"],"additionalProperties":false}}},"required":["apiVersion","kind","suites"],"additionalProperties":true}},{"if":{"properties":{"kind":{"const":"apitest"}}},"then":{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"saucectl api testing runner configuration","description":"Configuration file for api testing using saucectl","type":"object","allOf":[{"$ref":"#/allOf/1/then/allOf/0"}],"properties":{"apiVersion":{"const":"v1alpha"},"kind":{"const":"apitest"},"suites":{"description":"The set of properties providing details about the test suites to run.","type":"array","minItems":1,"items":{"type":"object","properties":{"name":{"description":"The name of the test suite, which will be reflected in the test results in Sauce Labs.","type":"string"},"projectName":{"description":"Your project's name.","type":"string"},"testMatch":{"description":"","type":"array"},"tests":{"description":"A list of test IDs to run for the project defined by hookId.","type":"array"},"tags":{"description":"A test tag to run for the project defined by hookId.","type":"array"},"useRemoteTests":{"description":"Use tests stored in the cloud instead of the local ones.","type":"boolean"}},"required":["projectName","name"],"additionalProperties":false}}},"required":["apiVersion","kind","suites"],"additionalProperties":true}},{"if":{"properties":{"kind":{"const":"playwright-cucumberjs"}}},"then":{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"saucectl playwright cucumberjs runner configuration","description":"Configuration file for cucumber using saucectl","type":"object","allOf":[{"$ref":"#/allOf/1/then/allOf/1"},{"$ref":"#/allOf/2/then/allOf/1"},{"$ref":"#/allOf/1/then/allOf/0"},{"$ref":"#/allOf/1/then/allOf/2"}],"properties":{"apiVersion":{"const":"v1alpha"},"kind":{"const":"playwright-cucumberjs"},"nodeVersion":{"$ref":"#/allOf/2/then/properties/nodeVersion"},"showConsoleLog":{"$ref":"#/allOf/1/then/properties/showConsoleLog"},"defaults":{"description":"Settings that are applied onto every suite by default, if no value is set on a suite explicitly.","type":"object","properties":{"timeout":{"$ref":"#/allOf/1/then/properties/defaults/properties/timeout"}},"additionalProperties":false},"rootDir":{"$ref":"#/allOf/2/then/properties/rootDir"},"playwright":{"description":"Contains details specific to the playwright.","type":"object","properties":{"version":{"description":"Which framework version to use."}},"required":["version"],"additionalProperties":false},"env":{"$ref":"#/allOf/2/then/properties/env"},"suites":{"description":"The set of properties providing details about the test suites to run.","type":"array","minItems":1,"items":{"type":"object","properties":{"name":{"description":"The name of the test suite, which will be reflected in the test results in Sauce Labs.","type":"string"},"browserName":{"description":"The name of the browser in which to run the tests."},"browserVersion":{"$ref":"#/allOf/3/then/properties/suites/items/properties/browserVersion"},"platformName":{"$ref":"#/allOf/3/then/properties/suites/items/properties/platform","enum":["macOS 11.00","macOS 12","macOS 13","Windows 10","Windows 11"]},"screenResolution":{"$ref":"#/allOf/2/then/properties/suites/items/properties/screenResolution"},"env":{"$ref":"#/allOf/2/then/properties/env"},"options":{"description":"Provides details related to the Cucumberjs test configuration.","type":"object","properties":{"config":{"description":"Provides the location of the configuration file.","type":"string"},"name":{"description":"Regular expressions of which cucumber scenario names should match one of to be run.","type":"string"},"paths":{"description":"Paths to where your feature files are.","type":"array"},"excludedTestFiles":{"$ref":"#/allOf/2/then/properties/suites/items/properties/excludedTestFiles"},"backtrace":{"description":"Show the full backtrace for errors.","type":"boolean"},"require":{"description":"Paths to where your support code is, for CommonJS.","type":"array"},"import":{"description":"Paths to where your support code is, for ESM.","type":"array"},"tags":{"description":"Tag expression to filter which scenarios should be run.","type":"array"},"format":{"description":"Name/path and (optionally) output file path of each formatter to use.","type":"array"},"formatOptions":{"description":"Options to be provided to cucumber formatters.","type":"object"},"parallel":{"description":"Run tests in parallel with the given number of worker processes.","type":"integer"}},"required":["paths"]},"shard":{"description":"When sharding is configured, saucectl automatically splits the tests (e.g. by spec, concurrency or scenario) so that they can easily run in parallel.","enum":["","concurrency","spec","scenario"]},"shardTagsEnabled":{"description":"When sharding is configured and the suite is configured to filter scenarios by tag expression, let saucectl filter test files before executing.","type":"boolean"},"timeout":{"$ref":"#/allOf/1/then/properties/defaults/properties/timeout"},"preExec":{"$ref":"#/allOf/2/then/properties/suites/items/properties/preExec"},"timeZone":{"$ref":"#/allOf/2/then/properties/suites/items/properties/timeZone"},"passThreshold":{"$ref":"#/allOf/1/then/properties/suites/items/properties/passThreshold"},"smartRetry":{"$ref":"#/allOf/1/then/properties/suites/items/properties/smartRetry"}},"required":["name"],"additionalProperties":false}}},"required":["apiVersion","kind","playwright","suites"],"additionalProperties":true}}]}
</schema>

[User] Provide a JSON object that satisfies the schema "SauceCTL Runner Configuration". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

SauceCTL Runner Configuration

Configuration file for saucectl.

apitest cypress espresso playwright puppeteer-replay testcafe xcuitest xctest playwright-cucumberjs

saucectl cypress runner configuration

Configuration file for cypress using saucectl

saucectl artifacts schema

Subschema for controlling artifacts

Manage test output, such as logs, videos, and screenshots.

Whether to remove all contents of artifacts directory

Settings related to downloading test artifacts from Sauce Labs.

Specifies which artifacts to download based on whether they match the file pattern provided. Supports the wildcard character '*'.

Specifies when and under what circumstances to download artifacts.

Specifies the path to the folder in which to download artifacts. A separate subdirectory is generated in this location for each suite.

If true and a test is retried, artifacts for every attempt will be downloaded. Otherwise, only artifacts for the final attempt will be downloaded.

Compress folders into zip files, which can then be downloaded as artifacts.

saucectl npm specific schema

Subschema for npm specific settings

Settings specific to npm.

Specifies whether to use the project's package-lock.json when installing npm dependencies. If true, package-lock.json will be used during installation which will improve the speed of installation.

Specifies any npm packages that are required to run tests.

Specify local npm dependencies for saucectl to upload. These dependencies must already be installed in the local node_modules directory.

Override the default and official NPM registry URL with a custom one.

Whether or not to do SSL key validation when making requests to the registry via https.

Specify all the registries you want to configure

Scope for the registry entry

URL for the registry entry

Authentication token for the registry entry

Base64-encoded authentication string for the registry entry

Username for authentication with the registry

Password for authentication with the registry

Email for authentication with the registry

saucectl sauce specific schema

Subschema for sauce specific settings

All settings related to how tests are run and identified in the Sauce Labs platform.

Sets the maximum number of suites to execute at the same time. Excess suites are queued and run in order as each suite completes.

The set of properties that allows you to provide additional information about your project that helps you distinguish it in the various environments in which it is used and reviewed.

Sauce Labs can aggregate all jobs under one view based on their association with a build.

Tag your jobs so you can find them easier in Sauce Labs.

Which Sauce Labs data center to target.

Path to the .sauceignore file.

SauceCTL supports using Sauce Connect to establish a secure connection when running your tests on Sauce Labs. To do so, launch a tunnel; then provide the identifier in this property.

The tunnel name.

The owner (username) of the tunnel. Must be specified if the user that created the tunnel differs from the user that is running the tests.

The number of times to retry a failing suite.

Set the visibility level of test results for suites run on Sauce Labs.

Accessible to everyone.

Share your test's results page and video, but keeps the logs only for you.

Only accessible to people with a valid link.

Only accessible to people under the same root account as you.

Only you (the owner) will be able to view assets and test results page.

Control starting order of suites. The default is the order in which suites are written in the config file.

Suites that historically have the highest failure rate start first.

saucectl reporters specific schema

Subschema for reporters specific settings

The JUnit reporter merges test results from all jobs in the JUnit format into a single report.

Toggles the reporter on/off.

Filename for the generated JUnit report.

The JSON reporter merges test results from all jobs in the JSON format into a single report.

Toggles the reporter on/off.

Webhook URL to pass JSON report.

Filename for the generated JSON report.

The spotlight reporter prints an overview of failed, or otherwise interesting, jobs.

Toggles the reporter on/off.

Specifies the Node.js version for Sauce Cloud. Supports SemVer notation and aliases.

Shows suites console.log locally. By default console.log is only shown on failures.

Settings that are applied onto every suite by default, if no value is set on a suite explicitly.

Instructs how long (in ms, s, m, or h) saucectl should wait for a suite to complete.

The directory of files that need to be bundled and uploaded for the tests to run.

Contains details specific to the Cypress project.

The designated cypress configuration file.

The secret key that grants permission to record your tests in the Cypress dashboard.

Whether to record your test results in the Cypress dashboard.

Which framework version to use.

Set one or more environment variables. Values can be environment variables themselves. Not supported when running espresso/xcuitest!

The set of properties providing details about the test suites to run.

The name of the test suite, which will be reflected in the test results in Sauce Labs.

The name of the browser in which to run the tests.

Which version of the browser to use.

macOS 11.00
macOS 12
macOS 13
Windows 10
Windows 11

A specific operating system on which to run the tests. Sauce Labs will try to choose a reasonable default if not explicitly specified.

Specifies a browser window screen resolution, which may be useful if you are attempting to simulate a browser on a particular device type.

Provides details related to the Cypress test configuration.

Specify the type of tests to execute; either e2e or component. Defaults to e2e

One or more paths to the Cypress test files to run for this suite.

Exclude test files for this suite.

When sharding is configured, saucectl automatically splits the tests (e.g. by spec or concurrency) so that they can easily run in parallel.

When sharding is configured and the suite is configured to filter using cypress-grep, let saucectl filter tests before executing.

Controls whether or not tests are run in headless mode (default: false)

Specifies which commands to execute before starting the tests.

Specifies the timeZone for the suite.

The minimum number of successful attempts for a suite to be considered as 'passed'.

Optimize suite retries by configuring the strategy.

Optimize suite retries by retrying failed tests, classes or spec files only.

saucectl espresso runner configuration

Configuration file for espresso using saucectl

saucectl sauce specific schema

Subschema for sauce specific settings

All settings related to how tests are run and identified in the Sauce Labs platform.

Sauce Labs can aggregate all jobs under one view based on their association with a build.

Tag your jobs so you can find them easier in Sauce Labs.

Which Sauce Labs data center to target.

Path to the .sauceignore file.

The tunnel name.

How long to wait for the specified tunnel to be ready. Supports duration values like '10s', '30m' etc.

The number of times to retry a failing suite.

Set the visibility level of test results for suites run on Sauce Labs.

Accessible to everyone.

Control starting order of suites. The default is the order in which suites are written in the config file.

saucectl artifacts schema

Subschema for controlling artifacts

Manage test output, such as logs, videos, and screenshots.

Whether to remove all contents of artifacts directory

Settings related to downloading test artifacts from Sauce Labs.

Specifies when and under what circumstances to download artifacts.

Compress folders into zip files, which can then be downloaded as artifacts.

saucectl reporters specific schema

Subschema for reporters specific settings

The JUnit reporter merges test results from all jobs in the JUnit format into a single report.

Toggles the reporter on/off.

Filename for the generated JUnit report.

The JSON reporter merges test results from all jobs in the JSON format into a single report.

Toggles the reporter on/off.

Webhook URL to pass JSON report.

Filename for the generated JSON report.

The spotlight reporter prints an overview of failed, or otherwise interesting, jobs.

Toggles the reporter on/off.

Shows suites console.log locally. By default console.log is only shown on failures.

Settings that are applied onto every suite by default, if no value is set on a suite explicitly.

Instructs how long (in ms, s, m, or h) saucectl should wait for a suite to complete.

Contains details specific to the Espresso project.

Local path or remote url to the application. If a remote url is defined, the app will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values.

Description for the app

Local path or remote url to the test application. If a remote url is defined, the app will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values.

Description for the testApp

The set of properties providing details about the test suites to run.

The name of the test suite, which will be reflected in the test results in Sauce Labs.

Description for the testApp

Allows you to control various details on how tests are executed.

Only run the specified classes.

Run all classes except those specified here.

Run all test classes that extend InstrumentationTestCase.

Run all test classes that do not extend either InstrumentationTestCase or PerformanceTestCase.

Run all test classes that extend PerformanceTestCase.

Only run tests in the specified package.

Run all tests except those in this package.

Run only tests that are annotated with the matching size value.

Only run tests with this annotation.

Run all tests except those with this annotation.

Only run tests that pass all of the custom filters.

Use custom builders to run tests.

Observe the test run with one or more RunListener.

Use the new list of RunListeners during a test run.

When sharding is configured, saucectl automatically creates the sharded jobs for each of the devices defined for the suite based on the number of shards you specify. For example, for a suite testing a single emulator version that specifies 2 shards, saucectl clones the suite and runs one shard index on the first suite, and the other shard index on the identical clone suite.

Removes all shared states from the testing device's CPU and memory at the completion of each test. Real devices only. Has to be used in conjunction with the 'useTestOrchestrator' flag.

Run each of your tests in its own Instrumentation instance to remove most of the app's shared state from the device CPU and memory between tests. Real devices only. Use this setting in conjunction with clearPackageData: true to completely remove all shared state.

Defines details for running this suite on virtual devices using an emulator.

The name of the emulator. To ensure name accuracy, check the list of supported virtual devices (https://app.saucelabs.com/live/web-testing/virtual).

The screen orientation to use.

The set of one or more versions of the device platform on which to run the test suite.

Define details for running this suite on real devices.

Request a specific device for this test suite by its ID. You can look up device IDs in the Sauce Labs app or using our Devices API (https://docs.saucelabs.com/dev/api/rdc#get-devices).

Match the device name in full or partially (regex), which may provide a larger pool of available devices of the type you want.

The version of the Android operating system.

Further specify desired device attributes within the pool of devices that match the name and version criteria.

Limit the device selection to those that are connected to a cellular network.

Limit the device selection to a specific type of device.

Limit the device selection to only match from your organization's private pool.

Configure real device settings.

Configure app settings for real device to enable app resigning.

Configure app settings for real device to capture audio.

Configure app settings for real device instrumentation.

Configure app settings for real device to inject provided images in the user app.

Configure app settings for real device to enable bypassing of screenshot restriction.

Configure app settings for real device to enable vitals.

Configure app settings for real device to capture network.

Configure app settings for real device to intercept biometric authentication.

The minimum number of successful attempts for a suite to be considered as 'passed'.

Optimize suite retries by configuring the strategy.

Optimize suite retries by retrying failed tests, classes or spec files only.

saucectl playwright runner configuration

Configuration file for playwright using saucectl

saucectl npm specific schema

Subschema for npm specific settings

Settings specific to npm.

Specifies any npm packages that are required to run tests.

Override the default and official NPM registry URL with a custom one.

Whether or not to do SSL key validation when making requests to the registry via https.

Specify all the registries you want to configure

Scope for the registry entry

URL for the registry entry

Authentication token for the registry entry

Base64-encoded authentication string for the registry entry

Username for authentication with the registry

Password for authentication with the registry

Email for authentication with the registry

Specifies the Node.js version for Sauce Cloud. Supports SemVer notation and aliases.

Settings that are applied onto every suite by default, if no value is set on a suite explicitly.

The directory of files that need to be bundled and uploaded for the tests to run.

Contains details specific to the Playwright project.

The path to playwright config file

The set of properties providing details about the test suites to run.

The name of the test suite, which will be reflected in the test results in Sauce Labs.

Paths to the playwright test files. Regex values are supported to indicate all files of a certain type or in a certain directory, etc.

Exclude test files to skip the tests.

Details any additional parameters you wish to set for the test suite.

Run tests in headless mode.

Total timeout in milliseconds for the whole test run.

Changes the timeout for the test (milliseconds).

Patterns to run tests based on their title.

Patterns to skip tests based on their title.

The number of times to repeat each test.

The maximum number of retry attempts given to failed tests.

The maximum number of test failures for this test run. After reaching this number, testing will stop and exit with an error. Setting to zero (default) disables this behavior.

Specify playwright project

Whether to update expected snapshots with the actual results produced by the test run

Set the maximum number of parallel worker processes (default: 1)

When sharding is configured, saucectl automatically creates the sharded jobs based on the number of shards you specify. For example, for a suite that specifies 2 shards, saucectl clones the suite and runs shard 1/2 on the first suite, and the other shard 2/2 on the identical clone suite.

When sharding is configured and the suite is configured to filter using grep/grepInvert, let saucectl filter specs before executing.

Specifies which commands to execute before starting the tests.

Specifies the timeZone for the suite.

saucectl puppeteer-replay runner configuration

Configuration file for puppeteer-replay using saucectl

Settings that are applied onto every suite by default, if no value is set on a suite explicitly.

The set of properties providing details about the test suites to run.

The name of the test suite, which will be reflected in the test results in Sauce Labs.

Relative paths to the chrome devtools recordings.

Which version of the browser to use.

saucectl testcafe runner configuration

Configuration file for testcafe using saucectl

Contains details specific to the TestCafe project.

The TestCafe configuration file.

Browser specific arguments.

Controls whether or not tests are run in headless mode (default: false)

Specifies the time (in milliseconds) TestCafe attempts to successfully execute an assertion if a selector property or a client function was passed as an actual value.

Injects scripts into pages visited during the tests.

Specifies the typescript compiler options to be used when running the tests.

Specifies the TypeScript options.

Specifies the path to the TypeScript tsconfig.json file.

Specifies the path to a custom TypeScript compiler module.

Specifies TypeScript compiler options. Full reference: https://www.typescriptlang.org/tsconfig#compilerOptions

Prevents the browser from caching page content.

Prevents TestCafe from taking screenshots.

Disable video recording.

Allows you to specify which tests or fixtures to run.

Runs a test with the specified name.

Runs tests whose names match the specified grep pattern.

Runs tests whose metadata matches the specified key-value pair.

Runs a test with the specified fixture name.

Runs tests whose fixture names match the specified grep pattern.

Runs tests whose fixture’s metadata matches the specified key-value pair.

Specifies the time (in milliseconds) passed after the DOMContentLoaded event, within which TestCafe waits for the window.load event to fire.

After the timeout passes or the window.load event is raised (whichever happens first), TestCafe starts the test.

Enable quarantine mode to eliminate false negatives and detect unstable tests. TestCafe quarantines tests that fail, and repeats them until they yield conclusive results.

The number of successful attempts necessary to confirm a test’s success. The option value should be greater than 0.

The maximum number of test execution attempts. The option value must be larger than the value of the successThreshold.

Allows you to specify the screenshot options.

Specifies that a screenshot should be taken whenever a test fails.

Specifies that the full page should be captured, including content that is not visible due to overflow.

Specifies the time (in milliseconds) within which selectors attempt to return a node.

Specifies wait time (in milliseconds) for fetch/XHR requests.

Specifies time (in milliseconds) to wait for HTML pages.

Time (in milliseconds) for browsers to connect to TestCafe and report that they are ready to test.

Maximum test execution time (in milliseconds).

Maximum test run execution time (in milliseconds).

Run tests against the simulators defined here.

The name of the simulator.

The name of the simulator platform.

Which platform versions (OS versions) should be used. Multiple values are treated as 'AND', thus tests run across multiple versions.

Determines whether to ignore JavaScript errors on a webpage.

Ignores uncaught errors and unhandled promise rejections in test code.

Specifies the test execution speed. Provide a number between 1 (the fastest) and 0.01 (the slowest).

Specifies files or directories from which to run tests.

Stops a test run if a test fails.

Enables importing ECMAScript Modules (ESM) that don't support CommonJS.

saucectl xcuitest runner configuration

Configuration file for xcuitest using saucectl

Settings that are applied onto every suite by default, if no value is set on a suite explicitly.

Contains details specific to the XCUITest project.

Description for the app.

Description for the testApp.

A list of applications to be installed alongside the main app. Applications can be defined as a local path or a remote url. If a remote url is defined, the app will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values. When targeting simulators, a maximum of 2 otherApps is supported.

The set of properties providing details about the test suites to run.

The name of the test suite, which will be reflected in the test results in Sauce Labs.

Description for the app.

Description for the testApp.

Allows you to control various details on how tests are executed.

Only run the specified classes.

Run all classes except those specified here.

Specifies ISO 639-1 language during testing. Supported on Simulators only.

Specifies ISO 3166-1 region during testing.

By default there is no timeout, if enabled, then the timeout is 600 seconds. This can be changed by adding the defaultTestExecutionTimeAllowance value. Supported on Simulators only.

The maximum execution time, in seconds, an individual test is given to execute, regardless of the test's preferred allowance. Supported on Simulators only.

The default execution time, in seconds, an individual test is given to execute if test timeouts are enabled. Supported on Simulators only.

Modify the time displayed on the status bar. Supported on Simulators only.

Configure real device settings.

Configure app settings for real device to enable app resigning.

Configure app settings for real device to capture audio.

Configure app settings for real device instrumentation.

Configure app settings for real device to inject provided images in the user app.

Configure app settings for real device to delay system alerts.

Configure app settings for real device to enable vitals.

Configure app settings for real device to capture network.

Configure app settings for real device to intercept biometric authentication.

Configure app settings for real device to enable group directory access.

Defines details for running this suite on virtual devices using a simulator.

The name of the simulator. To ensure name accuracy, check the list of supported virtual devices (https://app.saucelabs.com/live/web-testing/virtual).

The set of one or more versions of the device platform on which to run the test suite.

If set to true, the simulator will run on an ARM-based Mac. If set to false, the simulator will run on an Intel-based Mac.

Define details for running this suite on real devices.

Match the device name in full or partially (regex), which may provide a larger pool of available devices of the type you want.

The version of the iOS operating system.

Further specify desired device attributes within the pool of devices that match the name and version criteria.

Limit the device selection to those that are connected to a cellular network.

Limit the device selection to a specific type of device.

Limit the device selection to only match from your organization's private pool.

When sharding is configured, saucectl automatically splits the tests (e.g. by testList or concurrency) so that they can easily run in parallel.

This file containing tests will be used in sharding by concurrency.

saucectl xctest runner configuration

Configuration file for xctest using saucectl

Settings that are applied onto every suite by default, if no value is set on a suite explicitly.

Contains details specific to the XCTest project.

Description for the app.

Local path or remote url to the .xctestrun file test descriptor. If a remote url is defined, the file will be downloaded to a local temp directory before uploading to the SauceLabs Mobile App Storage service. Supports environment variables as values.

Description for the xcTestRunFile.

The set of properties providing details about the test suites to run.

The name of the test suite, which will be reflected in the test results in Sauce Labs.

Description for the app.

Description for the xcTestRunFile.

Allows you to control various details on how tests are executed.

Only run the specified classes.

Run all classes except those specified here.

Specifies ISO 639-1 language during testing. Supported on Simulators only.

Specifies ISO 3166-1 region during testing.

Modify the time displayed on the status bar. Supported on Simulators only.

Overwrite real device settings.

Overwrite app settings for real device to enable app resigning.

Overwrite app settings for real device to capture audio.

Overwrite app settings for real device instrumentation.

Overwrite app settings for real device to inject provided images in the user app.

Overwrite app settings for real device to delay system alerts.

Overwrite app settings for real device to enable vitals.

Overwrite app settings for real device to capture network.

Overwrite app settings for real device to intercept biometric authentication.

Overwrite app settings for real device to enable group directory access.

Define details for running this suite on real devices.

Match the device name in full or partially (regex), which may provide a larger pool of available devices of the type you want.

The version of the iOS operating system.

Further specify desired device attributes within the pool of devices that match the name and version criteria.

Limit the device selection to those that are connected to a cellular network.

Limit the device selection to a specific type of device.

Limit the device selection to only match from your organization's private pool.

This file containing tests will be used in sharding by concurrency.

saucectl api testing runner configuration

Configuration file for api testing using saucectl

The set of properties providing details about the test suites to run.

The name of the test suite, which will be reflected in the test results in Sauce Labs.

Your project's name.

A list of test IDs to run for the project defined by hookId.

A test tag to run for the project defined by hookId.

Use tests stored in the cloud instead of the local ones.

saucectl playwright cucumberjs runner configuration

Configuration file for cucumber using saucectl

Settings that are applied onto every suite by default, if no value is set on a suite explicitly.

Contains details specific to the playwright.

Which framework version to use.

The name of the browser in which to run the tests.

Provides details related to the Cucumberjs test configuration.

Provides the location of the configuration file.

Regular expressions of which cucumber scenario names should match one of to be run.

Paths to where your feature files are.

Show the full backtrace for errors.

Paths to where your support code is, for CommonJS.

Paths to where your support code is, for ESM.

Tag expression to filter which scenarios should be run.

Name/path and (optionally) output file path of each formatter to use.

Options to be provided to cucumber formatters.

Run tests in parallel with the given number of worker processes.

When sharding is configured, saucectl automatically splits the tests (e.g. by spec, concurrency or scenario) so that they can easily run in parallel.

When sharding is configured and the suite is configured to filter scenarios by tag expression, let saucectl filter test files before executing.

Provide a JSON object that satisfies the schema "SauceCTL Runner Configuration". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.