Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict';
  2.  
  3. const Utils = require('../step-utils');
  4. const Logger = require('../../logger').log;
  5. const Debug = require('../../debug');
  6. const Globals = require('../../globals');
  7.  
  8. module.exports = {
  9.   initConfig,
  10.   run
  11. };
  12.  
  13. let _config;
  14. let _errorConfig;
  15.  
  16. function getConfig() {
  17.   return _config;
  18. }
  19.  
  20. function initConfig (newConfig, newErrorConfig) {
  21.   _config = newConfig;
  22.   _errorConfig = newErrorConfig;
  23. };
  24.  
  25. function* maintenanceMessageHandling(nightmare, config) {
  26.   var maintenanceMessage = yield nightmare.use(Utils.getElementTextContent(config.selectors.maintenanceMessage));
  27.   var userNameFieldFound = yield nightmare.exists(config.selectors.userNameTextBox);
  28.   var passwordFieldFound = yield nightmare.exists(config.selectors.passwordTextBox);
  29.  
  30.   if (maintenanceMessage.indexOf(config.maintenanceContents[0]) > -1 && !userNameFieldFound && !passwordFieldFound) {
  31.     throw new Error('maintenance message:' + maintenanceMessage);
  32.   }
  33. }
  34.  
  35. function* run() {
  36.   const config = getConfig();
  37.  
  38.   try {
  39.     const nightmare = Globals.getNightmare();
  40.  
  41.     yield nightmare.goto(config.pageURL).wait();
  42.     Logger.info('pageURL loaded');
  43.  
  44.     Logger.info('waiting for loadmask or maintenanceMessage...');
  45.     yield nightmare.wait(
  46.       function (selectors) {
  47.         var maintenanceMessage = selectors.maintenanceMessage ? document.querySelector(selectors.maintenanceMessage) : null;
  48.         var mask = document.querySelector(selectors.mask);
  49.         return mask || maintenanceMessage;
  50.       }, config.selectors);
  51.     Logger.info('waiting for loadmask or maintenanceMessage...end');
  52.  
  53.     const loadMaskFound = yield nightmare.exists(config.selectors.mask);
  54.     const maintenanceMessageFoundBeforeMask = yield nightmare.exists(config.selectors.maintenanceMessage);
  55.     if (maintenanceMessageFoundBeforeMask && !loadMaskFound) {
  56.       yield maintenanceMessageHandling(nightmare, config);
  57.     }
  58.  
  59.     Logger.info('waiting for loadmask disappear...');
  60.     yield nightmare.use(Utils.waitForNotExist(config.selectors.mask));
  61.     Logger.info('waiting for loadmask disappear...end');
  62.  
  63.     Logger.info('waiting for userNameTextBox or maintenanceMessage...');
  64.     yield nightmare.wait(
  65.       function (selectors) {
  66.         var maintenanceMessage = selectors.maintenanceMessage ? document.querySelector(selectors.maintenanceMessage) : null;
  67.         var usernameTextBox = document.querySelector(selectors.userNameTextBox);
  68.         return usernameTextBox || maintenanceMessage;
  69.       }, config.selectors);
  70.     Logger.info('waiting for userNameTextBox or maintenanceMessage...end');
  71.  
  72.     const maintenanceMessageFound = yield nightmare.exists(config.selectors.maintenanceMessage);
  73.     if (maintenanceMessageFound) {
  74.       yield maintenanceMessageHandling();
  75.     }
  76.  
  77.     var userNameFieldFound = yield nightmare.exists(config.selectors.userNameTextBox);
  78.     var passwordFieldFound = yield nightmare.exists(config.selectors.passwordTextBox);
  79.     var loginButtonFound = yield nightmare.exists(config.selectors.loginButton);
  80.  
  81.     if (userNameFieldFound && passwordFieldFound && loginButtonFound) {
  82.       Logger.info(config.log);
  83.     } else {
  84.       var notFoundInfo = {
  85.         'usernameFound': userNameFieldFound,
  86.         'passwordFound': passwordFieldFound,
  87.         'loginButtonFound': loginButtonFound
  88.       };
  89.  
  90.       var notFoundString = JSON.stringify(notFoundInfo);
  91.       throw new Error('field not found:' + notFoundString);
  92.     }
  93.     if (config.debug || Debug.isDebugUser()) yield Debug.upload(config.name, config.debugWait);
  94.  
  95.     yield Utils.markAsDone(config);
  96.   } catch (error) {
  97.     error.configName = config.name;
  98.     throw error;
  99.   }
  100. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement