Upload video files and simulate the camera
BrowserStack Automate enables you to upload video files to BrowserStack devices to verify various use cases, such as testing web apps and websites that require access to camera and video output, scanning QR code to your web app, testing the video recording feature, etc.
In this guide, you will learn:
- Supported OS and browsers.
- How to upload your video files.
- How to inject the video file using the Automate capability.
Supported OS and browsers
Supported Platform | Supported Versions | Supported Browsers |
---|---|---|
Android | 9 and above | Chrome 101 and above |
iOS | 12 and above | Safari 10 and above |
Windows | 7 and above | Chrome 101 and above Edge 101 and above |
macOS | Any | Chrome 101 and above Edge 101 and above |
- Camera Video Injection feature is currently not supported on Oppo, Vivo, Huawei, Sony, and Samsung Galaxy M32 devices.
-
You can upload video files in the
.mp4
format only, with maximum file size of50 MB
.
Upload your video files
Prior to starting the test execution, upload the video files using media REST APIs.
curl -u "username:accesskey" -X POST "https://api-cloud.browserstack.com/automate/upload-media" -F "file=@/path/to/app/file/test.mp4"
The REST API returns a response media_url
for each successful file upload.
{
"media_url" : "media://<hashedid>"
}
Inject the video file using the Automate capability
If you are using BrowserStack SDK, you can set the following capabilities in the browserstack.yml
file:
Capability | Description |
---|---|
cameraInjection |
Set this capability to "true" if you want to use your video files to emulate camera in the test. |
cameraInjectionUrl |
Add this capability with media_url of the video files to emulate camera in the test. |
BrowserStack SDK is a plug-n-play solution that takes care of all the integration steps for you. Using the BrowserStack SDK is the recommended integration method for your project. To know more, visit the SDK core concepts page.
Use the capability values cameraInjection
for W3C protocol and browserstack.cameraInjection
for JSON wire protocol in your test scripts.
Capability | Description |
---|---|
cameraInjection |
Set this capability to "true" if you want to use your video files to emulate camera in the test. |
cameraInjectionUrl |
Add this capability with media_url of the video files to emulate camera in the test. |
Capability | Description |
---|---|
browserstack.cameraInjection |
Set this capability to "true" if you want to use your video files to emulate camera in the test. |
browserstack.cameraInjectionUrl |
Add this capability with media_url of the video files to emulate camera in the test. |
Example:
DesiredCapabilities capabilities = new DesiredCapabilities();
HashMap<String, Object> browserstackOptions = new HashMap<String, Object>();
browserstackOptions.put("cameraInjection", "true");
browserstackOptions.put("cameraInjectionUrl", "media://575927ad18ae787c065e680dc3ee864725cd809e");
capabilities.setCapability("bstack:options", browserstackOptions);
var capabilities = {
'bstack:options' : {
"cameraInjection" : "true"
"cameraInjectionUrl" : "media://575927ad18ae787c065e680dc3ee864725cd809e"
}
}
Dictionary<string, object> browserstackOptions = new Dictionary<string, object>();
browserstackOptions.Add("cameraInjection", "true");
browserstackOptions.Add("cameraInjectionUrl", "media://575927ad18ae787c065e680dc3ee864725cd809e");
capabilities.AddAdditionalOption("bstack:options", browserstackOptions);
desired_cap = {
'bstack:options' : {
"cameraInjection" : "true",
"cameraInjectionUrl" : "media://575927ad18ae787c065e680dc3ee864725cd809e",
},
}
capabilities = {
'bstack:options' => {
"cameraInjection" => "true",
"cameraInjectionUrl" => "media://575927ad18ae787c065e680dc3ee864725cd809e",
},
}
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
desiredCapabilities.setCapability("browserstack.cameraInjection","true");
desiredCapabilities.setCapability("browserstack.cameraInjectionUrl", "media://575927ad18ae787c065e680dc3ee864725cd809e");
var capabilities = {
"browserstack.cameraInjection" : "true"
"browserstack.cameraInjectionUrl" : "media://575927ad18ae787c065e680dc3ee864725cd809e"
}
ChromeOptions capability = new ChromeOptions();
capability.AddAdditionalCapability("browserstack.cameraInjection", "true");
capability.AddAdditionalCapability("browserstack.cameraInjectionUrl", "media://575927ad18ae787c065e680dc3ee864725cd809e");
desired_cap = {
"browserstack.cameraInjection" = "true",
"browserstack.cameraInjectionUrl" : "media://575927ad18ae787c065e680dc3ee864725cd809e",
}
caps = Selenium::WebDriver::Remote::Capabilities.new
caps["browserstack.cameraInjection"] = "true"
caps["browserstack.cameraInjectionUrl"] = "media://575927ad18ae787c065e680dc3ee864725cd809e"
We're sorry to hear that. Please share your feedback so we can do better
Contact our Support team for immediate help while we work on improving our docs.
We're continuously improving our docs. We'd love to know what you liked
We're sorry to hear that. Please share your feedback so we can do better
Contact our Support team for immediate help while we work on improving our docs.
We're continuously improving our docs. We'd love to know what you liked
Thank you for your valuable feedback!