nightmare-servicetitan
Version:
Plugin for nightmare to help with go.servicetian.com actions
104 lines (96 loc) • 2.54 kB
JavaScript
/**
* 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');
};
};