UNPKG

nightmare-servicetitan

Version:

Plugin for nightmare to help with go.servicetian.com actions

104 lines (96 loc) 2.54 kB
/** * The contents of this file is free and unencumbered software released into the * public domain. For more information, please refer to <http://unlicense.org/> * * @author Maxmillion McLaughlin <npm@maxmclau.com> */ let log = require('pretty-log'); /** * Login to ServiceTitan if required * * @param {String} username * @param {String} password */ var login = exports.login = function(username, password, callback) { return function(nightmare) { nightmare .goto('https://go.servicetitan.com/') .wait() .url() .then(function(url) { log.debug('redirect ' + url); if(url == 'https://go.servicetitan.com/Auth/Login') { nightmare .insert('form [name=Username]', username) .insert('form [name=Password]', password) .click('form .login-button') .wait('div.profile') .then(function() { log.debug('instance now logging in'); callback(true); }); } else if(url == 'https://go.servicetitan.com/#/Dashboard') { log.debug('instance previously logged in'); callback(true); } else { callback(false); log.error('unidentified redirect'); }; }); }; }; /** * Replace text in form field * * @param {String} input selector * @param {String} replace text */ var replace = exports.replace = function(selector, text) { if(text == null) { return function(nightmare) { log.debug(selector + ' text=null'); }; } else { return function(nightmare) { nightmare .insert(selector, '') .insert(selector, text) log.debug(selector + ' replaced with ' + text); }; }; }; /** * Submit form * * @param {String} selector */ var submit = exports.submit = function(selector) { if(selector == null) selector = 'form [type=submit]'; return function(nightmare) { nightmare .click(selector) .wait(100); log.debug(selector + ' simulated click'); }; }; var focusSelector = function(done, selector) { return this.evaluate_now(function(selector) { document.querySelector(selector).focus(); }, done.bind(this), selector); }; /** * Tag field * * @param {String} selector * @param {String} tag name */ var tag = exports.tag = function(selector, tag) { return function(nightmare) { nightmare .type(selector, tag) .wait(50) .type(selector, '\u000d') .wait(50) log.debug(selector + ' added tag'); }; };