UNPKG

protractor-browser-logs

Version:

Provides tools for asserting browser logs inside protractor tests

150 lines (127 loc) 5.37 kB
'use strict'; var promised = require('chai-as-promised'); var expect = require('chai').use(promised).expect; var logs = require('../../index'); var mocks = require('./mocks'); describe('Browser Logs', function () { var browserConsole, browserLogs; beforeEach(function () { var store = []; browserConsole = mocks.console(store); browserLogs = logs(mocks.browser(store, 'chrome')); }); it('should not fail if console is empty', function () { return expect(browserLogs.verify()).to.eventually.be.fulfilled; }); it('should fail if there is at least a single message', function () { browserConsole.error('Oops!'); return expect(browserLogs.verify()).to.eventually.be.rejectedWith('UNEXPECTED MESSAGE: {"level":"SEVERE","message":"Oops!"}'); }); it('should fail on first message, even if there are more messages', function () { browserConsole.error('Oops!'); browserConsole.warn('Oops!'); return expect(browserLogs.verify()).to.eventually.be.rejectedWith('UNEXPECTED MESSAGE: {"level":"SEVERE","message":"Oops!"}'); }); it('should allow ignoring the messages', function () { browserConsole.error('Oops!'); browserLogs.ignore(function () { return true; }); return expect(browserLogs.verify()).to.eventually.be.fulfilled; }); it('should allow ignoring the specific messages only', function () { browserConsole.error('Oops!'); browserConsole.warn('Oops!'); browserLogs.ignore(function (message) { return message.level.name === 'SEVERE'; }); return expect(browserLogs.verify()).to.eventually.be.rejectedWith('UNEXPECTED MESSAGE: {"level":"WARNING","message":"Oops!"}'); }); it('should have predefined ignore functions', function () { browserConsole.error('Oops!'); browserConsole.warn('Oops!'); browserConsole.info('Oops!'); browserConsole.debug('Oops!'); browserConsole.log('Oops!'); browserLogs.ignore(browserLogs.ERROR); browserLogs.ignore(browserLogs.WARNING); browserLogs.ignore(browserLogs.INFO); browserLogs.ignore(browserLogs.DEBUG); browserLogs.ignore(browserLogs.LOG); return expect(browserLogs.verify()).to.eventually.be.fulfilled; }); it('should allow using "or" helper function', function () { browserConsole.error('Oops!'); browserConsole.warn('Oops!'); browserLogs.ignore(browserLogs.or(browserLogs.ERROR, browserLogs.WARNING)); return expect(browserLogs.verify()).to.eventually.be.fulfilled; }); it('should allow using "and" helper function', function () { function havingLetter(letter) { return function (message) { return message.message.indexOf(letter) !== -1; }; } browserConsole.error('Oops!'); browserLogs.ignore(browserLogs.and(havingLetter('O'), havingLetter('!'))); return expect(browserLogs.verify()).to.eventually.be.fulfilled; }); it('should allow ignoring the strings', function () { browserConsole.error('This is a very long error'); browserLogs.ignore('very long'); return expect(browserLogs.verify()).to.eventually.be.fulfilled; }); it('should allow ignoring the strings only using the case sensitivity', function () { browserConsole.error('This is a very long error'); browserLogs.ignore('VERY LONG'); return expect(browserLogs.verify()).to.eventually.be.rejectedWith('UNEXPECTED MESSAGE: {"level":"SEVERE","message":"This is a very long error"}'); }); it('should allow ignoring regular expressions', function () { browserConsole.error('Oops!'); browserLogs.ignore(/oops/ig); return expect(browserLogs.verify()).to.eventually.be.fulfilled; }); it('should allow setting expectations', function () { browserLogs.expect('Oops!'); return expect(browserLogs.verify()).to.eventually.be.rejectedWith('NO MESSAGE TO EXPECT'); }); it('should allow expecting a sequence', function () { browserLogs.expect('a'); browserLogs.expect('b'); browserConsole.log('a'); browserConsole.log('b'); return expect(browserLogs.verify()).to.eventually.be.fulfilled; }); it('should fail if expectation sequence doesnt match', function () { browserLogs.expect('b'); browserLogs.expect('a'); browserConsole.log('a'); browserConsole.log('b'); return expect(browserLogs.verify()).to.eventually.be.rejectedWith('UNEXPECTED MESSAGE: {"level":"INFO","message":"a"}'); }); it('should allow reseting the ignores and expections', function () { browserLogs.expect('a'); browserLogs.expect('b'); browserLogs.reset(); return expect(browserLogs.verify()).to.eventually.be.fulfilled; }); it('should work only with chrome browser', function () { var firefox = logs(mocks.browser([], 'firefox')); firefox.expect('Oops!'); return expect(firefox.verify()).to.eventually.be.fulfilled; }); it('should fail if expectation is being ignored', function () { browserLogs.expect('a'); browserLogs.ignore('a'); browserConsole.error('a'); expect(browserLogs.verify()).to.eventually.be.rejectedWith('NO MESSAGE TO EXPECT'); }); it('should not fail calling verify multiple times', function () { browserLogs.expect('a'); browserConsole.error('a'); browserLogs.verify().then(function () { return browserLogs.verify(); }); }); }); //# sourceMappingURL=index.spec.js.map