Guest User

Untitled

a guest
Feb 28th, 2019
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // criticalpath--desktop-implicit.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.manage().timeouts().implicitlyWait(10000);
  62. driver.findElement(webdriver.By.css("div.Container__Inner-sc-1yvse88-0 > a.kxuhIW")).click().then(function() {
  63.   console.log('learn more button click');
  64. });
  65. driver.call(takeSnapshot);
  66.  
  67.  
  68. driver.manage().timeouts().implicitlyWait(10000);
  69. driver.findElement(webdriver.By.css("div.iYXIsq > a.kxuhIW")).click().then(function() {
  70.   console.log('get the pod clicked');
  71. });
  72. driver.call(takeSnapshot);
  73.  
  74.  
  75. driver.manage().timeouts().implicitlyWait(10000);
  76. driver.findElement(webdriver.By.id("reserve-pod-button")).click().then(function() {
  77.   console.log('reserve pod button clicked');
  78. });
  79. driver.call(takeSnapshot);
  80.  
  81. //quit the driver
  82. driver.quit()
  83.  
  84. //set the score as passing
  85. driver.call(setScore, null, 'pass').then(function(result){
  86.     console.log('set score to pass')
  87. });
  88.  
  89.  
  90. //Call API to set the score
  91. function setScore(score) {
  92.  
  93.     //webdriver has built-in promise to use
  94.     var deferred = webdriver.promise.defer();
  95.     var result = { error: false, message: null }
  96.  
  97.     if (sessionId){
  98.        
  99.         request({
  100.             method: 'PUT',
  101.             uri: 'https://crossbrowsertesting.com/api/v3/selenium/' + sessionId,
  102.             body: {'action': 'set_score', 'score': score },
  103.             json: true
  104.         },
  105.         function(error, response, body) {
  106.             if (error) {
  107.                 result.error = true;
  108.                 result.message = error;
  109.             }
  110.             else if (response.statusCode !== 200){
  111.                 result.error = true;
  112.                 result.message = body;
  113.             }
  114.             else{
  115.                 result.error = false;
  116.                 result.message = 'success';
  117.             }
  118.  
  119.             deferred.fulfill(result);
  120.         })
  121.         .auth(username, authkey);
  122.     }
  123.     else{
  124.         result.error = true;
  125.         result.message = 'Session Id was not defined';
  126.         deferred.fulfill(result);
  127.     }
  128.  
  129.     return deferred.promise;
  130. }
  131.  
  132. //Call API to get a snapshot
  133. function takeSnapshot() {
  134.  
  135.     //webdriver has built-in promise to use
  136.     var deferred = webdriver.promise.defer();
  137.     var result = { error: false, message: null }
  138.    
  139.     if (sessionId){
  140.  
  141.        
  142.         request.post(
  143.             'https://crossbrowsertesting.com/api/v3/selenium/' + sessionId + '/snapshots',
  144.             function(error, response, body) {
  145.                 if (error) {
  146.                     result.error = true;
  147.                     result.message = error;
  148.                 }
  149.                 else if (response.statusCode !== 200){
  150.                     result.error = true;
  151.                     result.message = body;
  152.                 }
  153.                 else{
  154.                     result.error = false;
  155.                     result.message = 'success';
  156.                 }
  157.                 //console.log('fulfilling promise in takeSnapshot')
  158.                 deferred.fulfill(result);
  159.             }
  160.         )
  161.         .auth(username,authkey);
  162.        
  163.     }
  164.     else{
  165.         result.error = true;
  166.         result.message = 'Session Id was not defined';
  167.         deferred.fulfill(result); //never call reject as we don't need this to actually stop the test
  168.     }
  169.  
  170.     return deferred.promise;
  171. }
  172.  
  173. //general error catching function
  174. function webdriverErrorHandler(err){
  175.  
  176.     console.error('There was an unhandled exception! ' + err);
  177.  
  178.     //if we had a session, end it and mark failed
  179.     if (driver && sessionId){
  180.         driver.quit();
  181.         setScore('fail').then(function(result){
  182.             console.log('set score to fail')
  183.         })
  184.     }
  185. }
Add Comment
Please, Sign In to add comment