diff --git a/test/memory/menu.js b/test/memory/menu.js new file mode 100644 index 00000000..eef7d7e7 --- /dev/null +++ b/test/memory/menu.js @@ -0,0 +1,24 @@ +var path = require('path'); +var drool = require('drool'); +var heapDiffPrinter = require('./utils.js').heapDiffPrinter; +var webdriver = drool.webdriver; + +module.exports = function(stamps, i, driver) { + drool.flow({ + setup: function() { + driver.get('file://' + path.join(__dirname, '../../dist/components/menu/demo.html')); + }, + action: function() { + driver.findElement(webdriver.By.css('#demo-menu-lower-left')).click(); + driver.sleep(1000); + driver.findElement(webdriver.By.css('#demo-menu-lower-left')).click(); + }, + beforeAssert: function() { + driver.sleep(1000); + }, + assert: function(after, initial) { + heapDiffPrinter(after, initial, i, 'menu'); + stamps.push([after.jsEventListeners, initial.jsEventListeners]); + } + }, driver); +}; diff --git a/test/memory/snackbar.js b/test/memory/snackbar.js new file mode 100644 index 00000000..ac3401a7 --- /dev/null +++ b/test/memory/snackbar.js @@ -0,0 +1,24 @@ +var path = require('path'); +var drool = require('drool'); +var heapDiffPrinter = require('./utils.js').heapDiffPrinter; + +module.exports = function(stamps, i, driver) { + drool.flow({ + setup: function() { + driver.get('file://' + path.join(__dirname, '../../dist/components/snackbar/demo.html')); + }, + action: function() { + driver.executeScript('document.querySelector("#demo-snackbar-example").MaterialSnackbar.showSnackbar({message: "🐐", timeout: 300})'); + driver.sleep(400); + }, + beforeAssert: function() { + driver.sleep(400); + }, + assert: function(after, initial) { + heapDiffPrinter(after, initial, i, 'snackbar'); + stamps.push([after.jsEventListeners, initial.jsEventListeners]); + } + }, driver); +} + + diff --git a/test/memory/test.js b/test/memory/test.js index e8dd30df..ae6891e2 100644 --- a/test/memory/test.js +++ b/test/memory/test.js @@ -1,67 +1,21 @@ 'use strict'; var drool = require('drool'); -var path = require('path'); -var humanize = require('humanize'); var assert = require('assert'); var webdriver = drool.webdriver; var controlFlow = webdriver.promise.controlFlow(); +var measureSnackbar = require('./snackbar'); +var measureMenu = require('./menu'); var driver = drool.start({chromeOptions: 'no-sandbox'}); var snackbarStamps = []; var menuStamps = []; -function heapDiffPrinter(after, initial, i, title) { - console.log(title + ' .. run: ' + (i + 1)); - console.log('node delta: ' + (after.nodes - initial.nodes)); - console.log('heap delta: ' + humanize.filesize(after.jsHeapSizeUsed - initial.jsHeapSizeUsed)); - console.log('event listener delta: ' + (after.jsEventListeners - initial.jsEventListeners)); +for (var i = 0; i < 3; ++i) { + measureSnackbar(snackbarStamps, i, driver); } -function measureSnackbar(stamps, i) { - drool.flow({ - setup: function() { - driver.get('file://' + path.join(__dirname, '../../dist/components/snackbar/demo.html')); - }, - action: function() { - driver.executeScript('document.querySelector("#demo-snackbar-example").MaterialSnackbar.showSnackbar({message: "🐐", timeout: 700})'); - driver.sleep(1000); - }, - beforeAssert: function() { - driver.sleep(1000); - }, - assert: function(after, initial) { - heapDiffPrinter(after, initial, i, 'snackbar'); - stamps.push([after.jsEventListeners, initial.jsEventListeners]); - } - }, driver); -} - -function measureMenuFlow(stamps, i) { - drool.flow({ - setup: function() { - driver.get('file://' + path.join(__dirname, '../../dist/components/menu/demo.html')); - }, - action: function() { - driver.findElement(webdriver.By.css('#demo-menu-lower-left')).click(); - driver.sleep(1000); - driver.findElement(webdriver.By.css('#demo-menu-lower-left')).click(); - }, - beforeAssert: function() { - driver.sleep(1000); - }, - assert: function(after, initial) { - heapDiffPrinter(after, initial, i, 'menu'); - stamps.push([after.jsEventListeners, initial.jsEventListeners]); - } - }, driver); -} - -for (var i = 0; i < 5; ++i) { - measureSnackbar(snackbarStamps, i); -} - -for (var i = 0; i < 5; ++i) { - measureMenuFlow(menuStamps, i); +for (var i = 0; i < 3; ++i) { + measureMenu(menuStamps, i, driver); } controlFlow.execute(function() { diff --git a/test/memory/utils.js b/test/memory/utils.js new file mode 100644 index 00000000..85bc74b5 --- /dev/null +++ b/test/memory/utils.js @@ -0,0 +1,10 @@ +var humanize = require('humanize'); + +module.exports = { + heapDiffPrinter: function(after, initial, i, title) { + console.log(title + ' .. run: ' + (i + 1)); + console.log('node delta: ' + (after.nodes - initial.nodes)); + console.log('heap delta: ' + humanize.filesize(after.jsHeapSizeUsed - initial.jsHeapSizeUsed)); + console.log('event listener delta: ' + (after.jsEventListeners - initial.jsEventListeners)); + } +};