Advertisement
Guest User

Untitled

a guest
Feb 28th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // criticalpath--desktop-waituntil.js
  2. var webdriver = require('selenium-webdriver');
  3. var SeleniumServer = require('selenium-webdriver/remote').SeleniumServer;
  4. var request = require('request');
  5. var remoteHub = 'http://hub.crossbrowsertesting.com:80/wd/hub';
  6. var assert = require('selenium-webdriver/testing/assert');
  7. var username = 'marketing@eightsleep.com'; //replace with your email address
  8. var authkey = 'u69abfc070af6b7e'; //replace with your authkey
  9.  
  10. var caps = {
  11.     'name': 'Critical Path Desktop',
  12.     'build': '1.0',
  13.     'browserName': 'Internet Explorer',
  14.     'version': '11',
  15.     'platform': 'Windows 10',
  16.     'screenResolution': '1366x768',
  17.     'record_video': 'true',
  18.     'record_network': 'false'
  19. };
  20.  
  21.  
  22. caps.username = username;
  23. caps.password = authkey;
  24.  
  25. var sessionId = null;
  26.  
  27. //register general error handler
  28. webdriver.promise.controlFlow().on('uncaughtException', webdriverErrorHandler);
  29.  
  30. console.log('Connection to the CrossBrowserTesting remote server');
  31.  
  32. var driver = new webdriver.Builder()
  33.             .usingServer(remoteHub)
  34.             .withCapabilities(caps)
  35.             .build();
  36.  
  37. //console.log('driver is ', driver)
  38.  
  39.  
  40.  
  41. // All driver calls are automatically queued by flow control.
  42. // Async functions outside of driver can use call() function.
  43. console.log('Waiting on the browser to be launched and the session to start');
  44.  
  45. driver.getSession().then(function(session){
  46.     sessionId = session.id_; //need for API calls
  47.     console.log('Session ID: ', sessionId);
  48.     console.log('See your test run at: https://app.crossbrowsertesting.com/selenium/' + sessionId)
  49. });
  50.  
  51. //load your URL
  52. driver.get('http://staging.eightsleep.com/?dbxtest');
  53.  
  54.  
  55. driver.getTitle().then(function(title){
  56.     console.log('page title is ', title);
  57.     assert(title).equals('The Only High-Tech Bed for Better Sleep | Eight Sleep®');
  58. });
  59.  
  60.  
  61. driver.wait(webdriver.until.elementLocated(webdriver.By.css("div.Container__Inner-sc-1yvse88-0 > a.kxuhIW")), 10000).click().then(function() {
  62.     console.log('learn more button click');
  63. });
  64. driver.call(takeSnapshot);
  65.  
  66.  
  67. driver.wait(webdriver.until.elementLocated(webdriver.By.css("div.iYXIsq > a.kxuhIW")), 10000).click().then(function() {
  68.     console.log('get the pod clicked');
  69. });
  70. driver.call(takeSnapshot);
  71.  
  72.  
  73. driver.wait(webdriver.until.elementLocated(webdriver.By.id("reserve-pod-button")), 10000).click().then(function() {
  74.     console.log('reserve pod button clicked');
  75. });
  76. driver.call(takeSnapshot);
  77.  
  78.  
  79. //quit the driver
  80. driver.quit()
  81.  
  82. //set the score as passing
  83. driver.call(setScore, null, 'pass').then(function(result){
  84.     console.log('set score to pass')
  85. });
  86.  
  87.  
  88. //Call API to set the score
  89. function setScore(score) {
  90.  
  91.     //webdriver has built-in promise to use
  92.     var deferred = webdriver.promise.defer();
  93.     var result = { error: false, message: null }
  94.  
  95.     if (sessionId){
  96.        
  97.         request({
  98.             method: 'PUT',
  99.             uri: 'https://crossbrowsertesting.com/api/v3/selenium/' + sessionId,
  100.             body: {'action': 'set_score', 'score': score },
  101.             json: true
  102.         },
  103.         function(error, response, body) {
  104.             if (error) {
  105.                 result.error = true;
  106.                 result.message = error;
  107.             }
  108.             else if (response.statusCode !== 200){
  109.                 result.error = true;
  110.                 result.message = body;
  111.             }
  112.             else{
  113.                 result.error = false;
  114.                 result.message = 'success';
  115.             }
  116.  
  117.             deferred.fulfill(result);
  118.         })
  119.         .auth(username, authkey);
  120.     }
  121.     else{
  122.         result.error = true;
  123.         result.message = 'Session Id was not defined';
  124.         deferred.fulfill(result);
  125.     }
  126.  
  127.     return deferred.promise;
  128. }
  129.  
  130. //Call API to get a snapshot
  131. function takeSnapshot() {
  132.  
  133.     //webdriver has built-in promise to use
  134.     var deferred = webdriver.promise.defer();
  135.     var result = { error: false, message: null }
  136.    
  137.     if (sessionId){
  138.  
  139.        
  140.         request.post(
  141.             'https://crossbrowsertesting.com/api/v3/selenium/' + sessionId + '/snapshots',
  142.             function(error, response, body) {
  143.                 if (error) {
  144.                     result.error = true;
  145.                     result.message = error;
  146.                 }
  147.                 else if (response.statusCode !== 200){
  148.                     result.error = true;
  149.                     result.message = body;
  150.                 }
  151.                 else{
  152.                     result.error = false;
  153.                     result.message = 'success';
  154.                 }
  155.                 //console.log('fulfilling promise in takeSnapshot')
  156.                 deferred.fulfill(result);
  157.             }
  158.         )
  159.         .auth(username,authkey);
  160.        
  161.     }
  162.     else{
  163.         result.error = true;
  164.         result.message = 'Session Id was not defined';
  165.         deferred.fulfill(result); //never call reject as we don't need this to actually stop the test
  166.     }
  167.  
  168.     return deferred.promise;
  169. }
  170.  
  171. //general error catching function
  172. function webdriverErrorHandler(err){
  173.  
  174.     console.error('There was an unhandled exception! ' + err);
  175.  
  176.     //if we had a session, end it and mark failed
  177.     if (driver && sessionId){
  178.         driver.quit();
  179.         setScore('fail').then(function(result){
  180.             console.log('set score to fail')
  181.         })
  182.     }
  183. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement