var expect = require('chai').expect; var assert = require('assert'); var markoComponents = require('marko/components'); function BrowserHelpers() { this.logOutput = []; this.components = []; } BrowserHelpers.prototype = { triggerEvent: function(el, type) { var ev = document.createEvent("Event"); ev.initEvent(type, true, true); el.dispatchEvent(ev); }, triggerMouseEvent: function(el, type) { var ev = document.createEvent("MouseEvent"); ev.initMouseEvent( type, true /* bubble */, true /* cancelable */, window, null, 0, 0, 0, 0, /* coordinates */ false, false, false, false, /* modifier keys */ 0 /*left*/, null ); el.dispatchEvent(ev); }, triggerClick: function(el) { this.triggerMouseEvent(el, 'click'); }, triggerMouseMove: function(el) { this.triggerMouseEvent(el, 'mousemove'); }, mount: function(component, input) { var renderResult = component.renderSync(input) .appendTo(this.targetEl); var component; try { component = renderResult.getComponent(); } catch(e) {} if (component) { this.components.push(component); } return component; }, log: function(data) { this.logOutput.push(data); }, getComponentForEl: function(el) { return markoComponents.getComponentForEl(el); }, get targetEl() { return document.getElementById('testsTarget'); }, nodeListToArray: function(nodes) { var nodeArray = new Array(nodes.length); for (var i=0; i