Awesome
Ember-cli-ajax-logger
This simple ember-cli addon add ability to log ajax requests inside application.
##Motivation Add access to requests/responses logs while intergration testing with Selenium.
#Configuration
Default configuration is
{
disabled: false,
globalName: 'emberCliAjaxLogger',
getItemForSerializer: (event, jqXHR, ajaxOptions)=> {
const { type, data, url } = ajaxOptions;
return JSON.stringify({
url,
type,
data,
responseText: jqXHR.responseText
});
}
}
It's a part of env-config (section 'ember-cli-ajax-logger' in config/environment.js )
module.exports = function(environment) {
var ENV = {
modulePrefix: 'dummy',
environment: environment,
baseURL: '/',
locationType: 'auto',
EmberENV: {
},
APP: {
},
'ember-cli-ajax-logger': {
globalName: 'emberCliAjaxLogger'
}
};
return ENV;
};
Option globalName
set the window property which contains logger object.
#API
To use logger instance you should use window[globalName]
by default it's window.emberCliAjaxLogger
.
Logger instance has next interface ( most of functions return logger instance thus you can use chain constructions )
clear
- clear log. Return logger instancegetSerialized
- return string which is serialized array build by item process functionsetFilterFunction
- set filter function which allow control list of items ingetSerialized
result. Takes callback as param. Callbak receive log items, index and log list ( tipical for[].filter
in js ). Return logger instancesetGetItemForSerializer
- set process function which use to build output forgetSerialized
method. Takes callback as param. Callbak receive log items, index and log list ( tipical for[].map
in js ). Return logger instanceregister
- add link into global namespace (window
). Takes string with name to register as param. Return logger instancesubscribe
- enable subscription via$.ajaxComplete
to add handler from logger instance. Return logger instanceenableLogging
- enable logging ( by defaultsubscribe
enable handler, but not add item into log. Return logger instancedisableLogging
- disable logging. Return logger instance
Example
Example ( from addon's initializer ) of usage
LoggerObject
.setGetItemForSerializer(({ _event, xhr, settings })=> {
const { type, data, url } = settings;
return JSON.stringify({
url,
type,
data,
responseText: xhr.responseText
});
})
.setFilterFunction((_item)=> true) // no filtering
.register('emberCliAjaxLogger')
.subscribe()
.enableLogging();
Also you can check existing tests here: https://github.com/vvscode/js--ember-cli-ajax-logger/blob/master/tests/acceptance/logger-test.js