Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // criticalpath--desktop-implicit.js
- var webdriver = require('selenium-webdriver');
- var SeleniumServer = require('selenium-webdriver/remote').SeleniumServer;
- var request = require('request');
- var remoteHub = 'http://hub.crossbrowsertesting.com:80/wd/hub';
- var assert = require('selenium-webdriver/testing/assert');
- var username = 'marketing@eightsleep.com'; //replace with your email address
- var authkey = 'u69abfc070af6b7e'; //replace with your authkey
- var caps = {
- 'name': 'Critical Path Desktop',
- 'build': '1.0',
- 'browserName': 'Internet Explorer',
- 'version': '11',
- 'platform': 'Windows 10',
- 'screenResolution': '1366x768',
- 'record_video': 'true',
- 'record_network': 'false'
- };
- caps.username = username;
- caps.password = authkey;
- var sessionId = null;
- //register general error handler
- webdriver.promise.controlFlow().on('uncaughtException', webdriverErrorHandler);
- console.log('Connection to the CrossBrowserTesting remote server');
- var driver = new webdriver.Builder()
- .usingServer(remoteHub)
- .withCapabilities(caps)
- .build();
- //console.log('driver is ', driver)
- // All driver calls are automatically queued by flow control.
- // Async functions outside of driver can use call() function.
- console.log('Waiting on the browser to be launched and the session to start');
- driver.getSession().then(function(session){
- sessionId = session.id_; //need for API calls
- console.log('Session ID: ', sessionId);
- console.log('See your test run at: https://app.crossbrowsertesting.com/selenium/' + sessionId)
- });
- //load your URL
- driver.get('http://staging.eightsleep.com/?dbxtest');
- driver.getTitle().then(function(title){
- console.log('page title is ', title);
- assert(title).equals('The Only High-Tech Bed for Better Sleep | Eight Sleep®');
- });
- driver.manage().timeouts().implicitlyWait(10000);
- driver.findElement(webdriver.By.css("div.Container__Inner-sc-1yvse88-0 > a.kxuhIW")).click().then(function() {
- console.log('learn more button click');
- });
- driver.call(takeSnapshot);
- driver.manage().timeouts().implicitlyWait(10000);
- driver.findElement(webdriver.By.css("div.iYXIsq > a.kxuhIW")).click().then(function() {
- console.log('get the pod clicked');
- });
- driver.call(takeSnapshot);
- driver.manage().timeouts().implicitlyWait(10000);
- driver.findElement(webdriver.By.id("reserve-pod-button")).click().then(function() {
- console.log('reserve pod button clicked');
- });
- driver.call(takeSnapshot);
- //quit the driver
- driver.quit()
- //set the score as passing
- driver.call(setScore, null, 'pass').then(function(result){
- console.log('set score to pass')
- });
- //Call API to set the score
- function setScore(score) {
- //webdriver has built-in promise to use
- var deferred = webdriver.promise.defer();
- var result = { error: false, message: null }
- if (sessionId){
- request({
- method: 'PUT',
- uri: 'https://crossbrowsertesting.com/api/v3/selenium/' + sessionId,
- body: {'action': 'set_score', 'score': score },
- json: true
- },
- function(error, response, body) {
- if (error) {
- result.error = true;
- result.message = error;
- }
- else if (response.statusCode !== 200){
- result.error = true;
- result.message = body;
- }
- else{
- result.error = false;
- result.message = 'success';
- }
- deferred.fulfill(result);
- })
- .auth(username, authkey);
- }
- else{
- result.error = true;
- result.message = 'Session Id was not defined';
- deferred.fulfill(result);
- }
- return deferred.promise;
- }
- //Call API to get a snapshot
- function takeSnapshot() {
- //webdriver has built-in promise to use
- var deferred = webdriver.promise.defer();
- var result = { error: false, message: null }
- if (sessionId){
- request.post(
- 'https://crossbrowsertesting.com/api/v3/selenium/' + sessionId + '/snapshots',
- function(error, response, body) {
- if (error) {
- result.error = true;
- result.message = error;
- }
- else if (response.statusCode !== 200){
- result.error = true;
- result.message = body;
- }
- else{
- result.error = false;
- result.message = 'success';
- }
- //console.log('fulfilling promise in takeSnapshot')
- deferred.fulfill(result);
- }
- )
- .auth(username,authkey);
- }
- else{
- result.error = true;
- result.message = 'Session Id was not defined';
- deferred.fulfill(result); //never call reject as we don't need this to actually stop the test
- }
- return deferred.promise;
- }
- //general error catching function
- function webdriverErrorHandler(err){
- console.error('There was an unhandled exception! ' + err);
- //if we had a session, end it and mark failed
- if (driver && sessionId){
- driver.quit();
- setScore('fail').then(function(result){
- console.log('set score to fail')
- })
- }
- }
Add Comment
Please, Sign In to add comment