Ember-cli addon to log ajax request while intergration testing (with Selenium or some other tools )
npm install ember-cli-ajax-loggerThis 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
``javascript`
{
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 )
`javascript
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 in getSerializedresult. 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 for getSerialized 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 default subscribe enable handler, but not add item into log. Return logger instancedisableLogging
- - disable logging. Return logger instance
`javascript``
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