I did not get a specific chrome option to work fine when my test is running on the server where we don't have a webcam when started chrome per the java selenium web driver script.
The goal is to mock a camera on the server and pass a fake media stream to the server machine where we don't have a webcam. The script is working fine on the local machine (because the local machine has a webcam) but it's not working on the experitest cloud browser where we don't have a webcam.
How to mock a camera on devices without a camera so that I can run my script through CI pipeline on a server or cloud browser?
The below code is working locally but not on the cloud browsers where we don't have support for the webcam and currently facing the we are unable to detect your camera error when running on a cloud browser
public class Sample {
private static final String ACCESS_KEY = "XXXX";
private RemoteWebDriver driver;
private URL url;
private DesiredCapabilities dc = new DesiredCapabilities();
@Before
public void setUp() throws Exception {
String videoSource = getClass().getClassLoader().getResource("sample1.y4m").toURI().toString();
System.out.println(videoSource);
ChromeOptions config = new ChromeOptions();
config.addArguments( //
"--use-fake-ui-for-media-stream", //
"--use-fake-device-for-media-stream", //
"--use-file-for-fake-video-capture=" + videoSource);
config.setHeadless(true);
config.setAcceptInsecureCerts(true);
dc.setCapability("testName", "Quick Start Chrome Browser Demo");
dc.setCapability("accessKey", ACCESS_KEY);
dc.setCapability(ChromeOptions.CAPABILITY, config);
dc.setCapability(CapabilityType.BROWSER_NAME, "chrome");
driver = new RemoteWebDriver(new URL("https://XXXXX/wd/hub"), dc);
}
@Test
public void virtualTryOn() {
driver.get("https://mytrialpage.com");
WebElement cookies = driver.findElement(By.id("onetrust-accept-btn-handler"));
cookies.click();
new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//button[@id='virtualTryOn']")));
WebElement vto = driver.findElement(By.xpath("//button[@id='ctaVirtual']"));
vto.click();
driver.switchTo().frame("scan-iframe");
}
@After
public void tearDown() {
System.out.println("Report URL: "+ driver.getCapabilities().getCapability("reportUrl"));
driver.quit();
}
}
**
- cloud browser output:
**