Best Testsigma code snippet using com.testsigma.agent.services.DriverSessionsService.sendMobileSessionStartedRequest
Source: DriverSessionsService.java
...77 setRemoteServerURL(testsigmaDriver, driverSessionRequest, webDriverSettingsDTO);78 testsigmaDriver.setCapabilities(caps);79 RemoteWebDriver remoteWebDriver = testsigmaDriver.createSession();80 String sessionId = populateSessionIdMaps(remoteWebDriver, driverSessionRequest);81 sendMobileSessionStartedRequest(sessionId, driverSessionRequest);82 return sessionId;83 }84 private com.testsigma.agent.dto.WebDriverSettingsDTO fetchWebDriverSettings(DriverSessionRequest driverSessionRequest)85 throws IOException, TestsigmaException {86 HttpResponse<com.testsigma.agent.dto.WebDriverSettingsDTO> response;87 String authHeader = null;88 if (agentConfig.getJwtApiKey() == null) {89 authHeader = WebAppHttpClient.BEARER + " " + driverSessionRequest.getJwtApiKey();90 } else {91 authHeader = WebAppHttpClient.BEARER + " " + agentConfig.getJwtApiKey();92 }93 response = httpClient.post(ServerURLBuilder.webDriverSettingsURL(), driverSessionRequest, new TypeReference<>() {94 }, authHeader);95 if (response.getStatusCode() != HttpStatus.OK.value()) {96 throw new TestsigmaException("Could not fetch web driver settings from server "97 + response.getStatusCode() + " - " + response.getStatusMessage());98 }99 return response.getResponseEntity();100 }101 private String populateSessionIdMaps(RemoteWebDriver remoteWebDriver, DriverSessionRequest driverSessionRequest)102 throws Exception {103 String sessionId = remoteWebDriver.getSessionId().toString();104 if (sessionContainer.getDeviceToSessionMap().containsKey(driverSessionRequest.getUniqueId())) {105 deleteSession(sessionContainer.getDeviceToSessionMap().get(driverSessionRequest.getUniqueId()));106 }107 sessionContainer.getSessionMap().put(sessionId, remoteWebDriver);108 sessionContainer.getSessionToDeviceIdMap().put(sessionId, driverSessionRequest.getUniqueId());109 sessionContainer.getDeviceToSessionMap().put(driverSessionRequest.getUniqueId(), sessionId);110 return sessionId;111 }112 private void addMissingTimeOutCapability(List<WebDriverCapability> caps) {113 WebDriverCapability newCommandTimeoutCapability = caps.stream().filter(cap -> cap.getCapabilityName()114 .equals(TSCapabilityType.NEW_COMMAND_TIMEOUT)).findFirst().orElse(null);115 if (newCommandTimeoutCapability == null) {116 caps.add(new WebDriverCapability(TSCapabilityType.NEW_COMMAND_TIMEOUT, 0));117 }118 }119 private void setRemoteServerURL(TestsigmaDriver testsigmaDriver, DriverSessionRequest driverSessionRequest,120 WebDriverSettingsDTO webDriverSettingsDTO) throws MalformedURLException {121 if (driverSessionRequest.getExecutionLabType().equals(ExecutionLabType.Hybrid)) {122 testsigmaDriver.setRemoteServerURL(new URL(mobileAutomationServerService.getMobileAutomationServer().getServerURL()));123 } else {124 testsigmaDriver.setRemoteServerURL(webDriverSettingsDTO.getWebDriverServerUrl());125 }126 }127 private void handleLocalDevice(List<WebDriverCapability> caps, DriverSessionRequest driverSessionRequest)128 throws TestsigmaException, AutomatorException {129 if (driverSessionRequest.getExecutionLabType().equals(ExecutionLabType.Hybrid)) {130 appendChromeDriverExecutable(caps, driverSessionRequest);131 if (driverSessionRequest.getWorkspaceType() == WorkspaceType.IOSNative) {132 setupIosDevice(caps, driverSessionRequest);133 }134 }135 }136 private void appendChromeDriverExecutable(List<WebDriverCapability> caps, DriverSessionRequest driverSessionRequest)137 throws TestsigmaException {138 MobileDevice device = deviceContainer.getDevice(driverSessionRequest.getUniqueId());139 if (device.getBrowserList() != null && device.getBrowserList().size() > 0) {140 AgentBrowser browser = device.getBrowserList().get(0);141 File chromePath = driverExecutableExists(Browsers.GoogleChrome.getKey(),142 browser.getMajorVersion() + "");143 if (chromePath != null) {144 WebDriverCapability cap = new WebDriverCapability(TSCapabilityType.CHROME_DRIVER_EXECUTABLE, chromePath.getAbsolutePath());145 caps.add(cap);146 } else {147 log.warn("Chrome Driver is not yet downloaded.. please try after some time");148 }149 }150 }151 public void setupIosDevice(List<WebDriverCapability> caps, DriverSessionRequest driverSessionRequest)152 throws TestsigmaException, AutomatorException {153 MobileDevice device = deviceContainer.getDevice(driverSessionRequest.getUniqueId());154 iosDeviceService.setupWda(device);155 WebDriverCapability bundleIdCapability = caps.stream().filter(cap -> cap.getCapabilityName()156 .equals(TSCapabilityType.BUNDLE_ID)).findFirst().orElse(null);157 if ((bundleIdCapability == null) || StringUtils.isBlank((String) bundleIdCapability.getCapabilityValue())) {158 WebDriverCapability appCapability = caps.stream().filter(cap -> cap.getCapabilityName()159 .equals(MobileCapabilityType.APP)).findFirst().orElse(null);160 AppPathType appPathType = driverSessionRequest.getApplicationPathType();161 if ((appCapability != null) && appPathType != AppPathType.APP_DETAILS) {162 caps.remove(appCapability);163 String appPresignedUrl = (String) appCapability.getCapabilityValue();164 String bundleId = iosDeviceService.installApp(device, appPresignedUrl, device.getIsEmulator());165 caps.add(new WebDriverCapability(TSCapabilityType.BUNDLE_ID, bundleId));166 }167 }168 }169 private TestsigmaDriver getDriverInstance(DriverSessionRequest driverSessionRequest) {170 TestsigmaDriver testsigmaDriver = new TestsigmaDriver();171 if (Platform.Android.equals(driverSessionRequest.getPlatform())) {172 testsigmaDriver = new AndroidDriver();173 } else if (Platform.iOS.equals(driverSessionRequest.getPlatform())) {174 testsigmaDriver = new IosDriver();175 }176 return testsigmaDriver;177 }178 public void deleteSession(String sessionId) throws Exception {179 log.debug("Removing session from appium server");180 RemoteWebDriver remoteWebDriver = sessionContainer.getSessionMap().get(sessionId);181 new TestsigmaDriver().deleteSession(remoteWebDriver);182 if (sessionContainer.getSessionMap().containsKey(sessionId)) {183 sessionContainer.getSessionMap().remove(sessionId);184 String deviceId = sessionContainer.getSessionToDeviceIdMap().get(sessionId);185 sessionContainer.getSessionToDeviceIdMap().remove(sessionId);186 sessionContainer.getDeviceToSessionMap().remove(deviceId);187 if (deviceContainer != null && deviceContainer.getDeviceMap().containsKey(deviceId)) {188 MobileDevice device = deviceContainer.getDevice(deviceId);189 if((device != null) && (device.getOsName() == MobileOs.IOS)) {190 iosDeviceService.cleanupWda(device);191 } else {192 log.info("Device os is not iOS. Skipping WDA cleanup");193 }194 }195 } else {196 log.info("Session ID - " + sessionId + " doesn't exist.");197 }198 }199 public String getSession(String sessionId) throws Exception {200 RemoteWebDriver remoteWebDriver = sessionContainer.getSessionMap().get(sessionId);201 Response response = remoteWebDriver.getCommandExecutor().execute(new Command(new SessionId(sessionId), "status"));202 return response.getState() + "-" + response.getStatus();203 }204 public void disconnectDeviceSession(String uniqueId) throws Exception {205 String sessionId = sessionContainer.getDeviceToSessionMap().get(uniqueId);206 if (sessionId != null) {207 log.debug("Detected an existing inspection session for device - " + uniqueId + " , Stopping the session.");208 deleteSession(sessionId);209 }210 }211 private void sendMobileSessionStartedRequest(String sessionId, DriverSessionRequest driverSessionRequest)212 throws IOException {213 MobileInspectionRequest mobileInspectionRequest = new MobileInspectionRequest();214 mobileInspectionRequest.setId(driverSessionRequest.getMobileSessionId());215 mobileInspectionRequest.setStatus(MobileInspectionStatus.STARTED);216 mobileInspectionRequest.setStartedAt(new Timestamp(System.currentTimeMillis()));217 mobileInspectionRequest.setLastActiveAt(new Timestamp(System.currentTimeMillis()));218 mobileInspectionRequest.setSessionId(sessionId);219 String authHeader = null;220 String Uuid = null;221 if (agentConfig.getJwtApiKey() == null) {222 authHeader = WebAppHttpClient.BEARER + " " + driverSessionRequest.getJwtApiKey();223 Uuid = driverSessionRequest.getAgentUUID();224 } else {225 authHeader = WebAppHttpClient.BEARER + " " + agentConfig.getJwtApiKey();...
Check out the latest blogs from LambdaTest on this topic:
If you are a web tester then somewhere down the road you will have to come across Selenium, an open-source test automation framework that has been on boom ever since its launch in 2004.
This article is a part of our Content Hub. For more in-depth resources, check out our content hub on Mobile App Testing Tutorial.
Smartphones have changed the way humans interact with technology. Be it travel, fitness, lifestyle, video games, or even services, it’s all just a few touches away (quite literally so). We only need to look at the growing throngs of smartphone or tablet users vs. desktop users to grasp this reality.
Desired Capabilities is a class used to declare a set of basic requirements such as combinations of browsers, operating systems, browser versions, etc. to perform automated cross browser testing of a web application.
The purpose of developing test cases is to ensure the application functions as expected for the customer. Test cases provide basic application documentation for every function, feature, and integrated connection. Test case development often detects defects in the design or missing requirements early in the development process. Additionally, well-written test cases provide internal documentation for all application processing. Test case development is an important part of determining software quality and keeping defects away from customers.
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!