From a6d49a49eaaeee73d8b417188823393adf65794e Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 11 Sep 2017 15:48:50 -0700 Subject: test - integration - use async fn for error catching --- test/integration/lib/first-time.js | 181 ++++++++++++++++++------------------- 1 file changed, 87 insertions(+), 94 deletions(-) (limited to 'test') diff --git a/test/integration/lib/first-time.js b/test/integration/lib/first-time.js index 0e4b802da..cc56b3704 100644 --- a/test/integration/lib/first-time.js +++ b/test/integration/lib/first-time.js @@ -2,125 +2,118 @@ const PASSWORD = 'password123' QUnit.module('first time usage') -QUnit.test('render init screen', function (assert) { - var done = assert.async() - let app - - wait().then(function() { - app = $('iframe').contents().find('#app-content .mock-app-root') - - const recurseNotices = function () { - let button = app.find('button') - if (button.html() === 'Accept') { - let termsPage = app.find('.markdown')[0] - termsPage.scrollTop = termsPage.scrollHeight - return wait().then(() => { - button.click() - return wait() - }).then(() => { - return recurseNotices() - }) - } else { - return wait() - } +QUnit.test('render init screen', (assert) => { + const done = assert.async() + runFirstTimeUsageTest(assert).then(done).catch((err) => { + assert.notOk(err, 'Should not error') + done() + }) +}) + +async function runFirstTimeUsageTest(assert, done) { + await wait() + + const app = $('iframe').contents().find('#app-content .mock-app-root') + + const recurseNotices = async () => { + const button = app.find('button') + if (button.html() === 'Accept') { + const termsPage = app.find('.markdown')[0] + termsPage.scrollTop = termsPage.scrollHeight + await wait() + button.click() + await wait() + await recurseNotices() + } else { + await wait() } - return recurseNotices() - }).then(function() { - // Scroll through terms - var title = app.find('h1').text() - assert.equal(title, 'MetaMask', 'title screen') + } - // enter password - var pwBox = app.find('#password-box')[0] - var confBox = app.find('#password-box-confirm')[0] - pwBox.value = PASSWORD - confBox.value = PASSWORD + await recurseNotices() - return wait() - }).then(function() { + // Scroll through terms + const title = app.find('h1').text() + assert.equal(title, 'MetaMask', 'title screen') - // create vault - var createButton = app.find('button.primary')[0] - createButton.click() + // enter password + const pwBox = app.find('#password-box')[0] + const confBox = app.find('#password-box-confirm')[0] + pwBox.value = PASSWORD + confBox.value = PASSWORD - return wait(1500) - }).then(function() { + await wait() - var created = app.find('h3')[0] - assert.equal(created.textContent, 'Vault Created', 'Vault created screen') + // create vault + const createButton = app.find('button.primary')[0] + createButton.click() - // Agree button - var button = app.find('button')[0] - assert.ok(button, 'button present') - button.click() + await wait(1500) - return wait(1000) - }).then(function() { + const created = app.find('h3')[0] + assert.equal(created.textContent, 'Vault Created', 'Vault created screen') - var detail = app.find('.account-detail-section')[0] - assert.ok(detail, 'Account detail section loaded.') + // Agree button + const button = app.find('button')[0] + assert.ok(button, 'button present') + button.click() - var sandwich = app.find('.sandwich-expando')[0] - sandwich.click() + await wait(1000) - return wait() - }).then(function() { + const detail = app.find('.account-detail-section')[0] + assert.ok(detail, 'Account detail section loaded.') - var sandwich = app.find('.menu-droppo')[0] - var children = sandwich.children - var lock = children[children.length - 2] - assert.ok(lock, 'Lock menu item found') - lock.click() + const sandwich = app.find('.sandwich-expando')[0] + sandwich.click() - return wait(1000) - }).then(function() { + await wait() - var pwBox = app.find('#password-box')[0] - pwBox.value = PASSWORD + const menu = app.find('.menu-droppo')[0] + const children = menu.children + const lock = children[children.length - 2] + assert.ok(lock, 'Lock menu item found') + lock.click() - var createButton = app.find('button.primary')[0] - createButton.click() + await wait(1000) - return wait(1000) - }).then(function() { + const pwBox2 = app.find('#password-box')[0] + pwBox2.value = PASSWORD - var detail = app.find('.account-detail-section')[0] - assert.ok(detail, 'Account detail section loaded again.') + const createButton2 = app.find('button.primary')[0] + createButton2.click() - return wait() - }).then(function (){ + await wait(1000) - var qrButton = app.find('.fa.fa-ellipsis-h')[0] // open account settings dropdown - qrButton.click() + const detail2 = app.find('.account-detail-section')[0] + assert.ok(detail2, 'Account detail section loaded again.') - return wait(1000) - }).then(function (){ + await wait() - var qrButton = app.find('.dropdown-menu-item')[1] // qr code item - qrButton.click() + // open account settings dropdown + const qrButton = app.find('.fa.fa-ellipsis-h')[0] + qrButton.click() - return wait(1000) - }).then(function (){ + await wait(1000) - var qrHeader = app.find('.qr-header')[0] - var qrContainer = app.find('#qr-container')[0] - assert.equal(qrHeader.textContent, 'Account 1', 'Should show account label.') - assert.ok(qrContainer, 'QR Container found') + // qr code item + const qrButton2 = app.find('.dropdown-menu-item')[1] + qrButton2.click() - return wait() - }).then(function (){ + await wait(1000) - var networkMenu = app.find('.network-indicator')[0] - networkMenu.click() + const qrHeader = app.find('.qr-header')[0] + const qrContainer = app.find('#qr-container')[0] + assert.equal(qrHeader.textContent, 'Account 1', 'Should show account label.') + assert.ok(qrContainer, 'QR Container found') - return wait() - }).then(function (){ + await wait() - var networkMenu = app.find('.network-indicator')[0] - var children = networkMenu.children - children.length[3] - assert.ok(children, 'All network options present') + const networkMenu = app.find('.network-indicator')[0] + networkMenu.click() - done() - }) -}) + await wait() + + const networkMenu2 = app.find('.network-indicator')[0] + const children2 = networkMenu2.children + children2.length[3] + assert.ok(children2, 'All network options present') +} \ No newline at end of file -- cgit v1.2.3 From 19d6618c04196f392a455823d1929025d40564fa Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 11 Sep 2017 16:21:58 -0700 Subject: test - integration - build - use pump + log bundling information --- test/integration/index.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'test') diff --git a/test/integration/index.js b/test/integration/index.js index e089fc39b..8dc8a408f 100644 --- a/test/integration/index.js +++ b/test/integration/index.js @@ -1,5 +1,6 @@ const fs = require('fs') const path = require('path') +const pump = require('pump') const browserify = require('browserify') const tests = fs.readdirSync(path.join(__dirname, 'lib')) const bundlePath = path.join(__dirname, 'bundle.js') @@ -9,11 +10,16 @@ const b = browserify() const writeStream = fs.createWriteStream(bundlePath) tests.forEach(function (fileName) { - b.add(path.join(__dirname, 'lib', fileName)) + const filePath = path.join(__dirname, 'lib', fileName) + console.log(`bundling test "${filePath}"`) + b.add(filePath) }) -b.bundle() -.pipe(writeStream) -.on('error', (err) => { - throw err -}) +pump( + b.bundle(), + writeStream, + (err) => { + if (err) throw err + console.log('bundle completed.') + } +) \ No newline at end of file -- cgit v1.2.3 From d4a41e0277bb2a8905b546165a3b0de62d3407cb Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 11 Sep 2017 16:32:07 -0700 Subject: test - integration - build - manually exit from test builder + add bundle destination log --- test/integration/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/integration/index.js b/test/integration/index.js index 8dc8a408f..144303dbb 100644 --- a/test/integration/index.js +++ b/test/integration/index.js @@ -20,6 +20,7 @@ pump( writeStream, (err) => { if (err) throw err - console.log('bundle completed.') + console.log(`Integration test build completed: "${bundlePath}"`) + process.exit(0) } ) \ No newline at end of file -- cgit v1.2.3 From 0e70366e9c31d3085d505f110b586418c72c217e Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 11 Sep 2017 20:14:52 -0700 Subject: test - integration - drop testem for karma --- test/integration/helpers.js | 7 ----- test/integration/lib/first-time.js | 58 ++++++++++++++++++++++++++++---------- 2 files changed, 43 insertions(+), 22 deletions(-) delete mode 100644 test/integration/helpers.js (limited to 'test') diff --git a/test/integration/helpers.js b/test/integration/helpers.js deleted file mode 100644 index 10cd74e64..000000000 --- a/test/integration/helpers.js +++ /dev/null @@ -1,7 +0,0 @@ -function wait(time) { - return new Promise(function (resolve, reject) { - setTimeout(function () { - resolve() - }, time * 3 || 1500) - }) -} diff --git a/test/integration/lib/first-time.js b/test/integration/lib/first-time.js index cc56b3704..c5ecfef95 100644 --- a/test/integration/lib/first-time.js +++ b/test/integration/lib/first-time.js @@ -10,26 +10,46 @@ QUnit.test('render init screen', (assert) => { }) }) +<<<<<<< HEAD +======= +// QUnit.testDone(({ module, name, total, passed, failed, skipped, todo, runtime }) => { +// if (failed > 0) { +// const app = $('iframe').contents()[0].documentElement +// console.warn('Test failures - dumping DOM:') +// console.log(app.innerHTML) +// } +// }) + +>>>>>>> 5c53bab... test - integration - drop testem for karma async function runFirstTimeUsageTest(assert, done) { - await wait() - const app = $('iframe').contents().find('#app-content .mock-app-root') + await timeout() + + const app = $('#app-content .mock-app-root') const recurseNotices = async () => { const button = app.find('button') if (button.html() === 'Accept') { const termsPage = app.find('.markdown')[0] termsPage.scrollTop = termsPage.scrollHeight - await wait() + await timeout() button.click() +<<<<<<< HEAD await wait() await recurseNotices() +======= + await timeout() +>>>>>>> 5c53bab... test - integration - drop testem for karma } else { await wait() } } +<<<<<<< HEAD await recurseNotices() +======= + await timeout() +>>>>>>> 5c53bab... test - integration - drop testem for karma // Scroll through terms const title = app.find('h1').text() @@ -41,13 +61,13 @@ async function runFirstTimeUsageTest(assert, done) { pwBox.value = PASSWORD confBox.value = PASSWORD - await wait() + await timeout() // create vault const createButton = app.find('button.primary')[0] createButton.click() - await wait(1500) + await timeout(1500) const created = app.find('h3')[0] assert.equal(created.textContent, 'Vault Created', 'Vault created screen') @@ -57,7 +77,7 @@ async function runFirstTimeUsageTest(assert, done) { assert.ok(button, 'button present') button.click() - await wait(1000) + await timeout(1000) const detail = app.find('.account-detail-section')[0] assert.ok(detail, 'Account detail section loaded.') @@ -65,7 +85,7 @@ async function runFirstTimeUsageTest(assert, done) { const sandwich = app.find('.sandwich-expando')[0] sandwich.click() - await wait() + await timeout() const menu = app.find('.menu-droppo')[0] const children = menu.children @@ -73,7 +93,7 @@ async function runFirstTimeUsageTest(assert, done) { assert.ok(lock, 'Lock menu item found') lock.click() - await wait(1000) + await timeout(1000) const pwBox2 = app.find('#password-box')[0] pwBox2.value = PASSWORD @@ -81,39 +101,47 @@ async function runFirstTimeUsageTest(assert, done) { const createButton2 = app.find('button.primary')[0] createButton2.click() - await wait(1000) + await timeout(1000) const detail2 = app.find('.account-detail-section')[0] assert.ok(detail2, 'Account detail section loaded again.') - await wait() + await timeout() // open account settings dropdown const qrButton = app.find('.fa.fa-ellipsis-h')[0] qrButton.click() - await wait(1000) + await timeout(1000) // qr code item const qrButton2 = app.find('.dropdown-menu-item')[1] qrButton2.click() - await wait(1000) + await timeout(1000) const qrHeader = app.find('.qr-header')[0] const qrContainer = app.find('#qr-container')[0] assert.equal(qrHeader.textContent, 'Account 1', 'Should show account label.') assert.ok(qrContainer, 'QR Container found') - await wait() + await timeout() const networkMenu = app.find('.network-indicator')[0] networkMenu.click() - await wait() + await timeout() const networkMenu2 = app.find('.network-indicator')[0] const children2 = networkMenu2.children children2.length[3] assert.ok(children2, 'All network options present') -} \ No newline at end of file +} + +function timeout(time) { + return new Promise(function (resolve, reject) { + setTimeout(function () { + resolve() + }, time * 3 || 1500) + }) +} -- cgit v1.2.3 From 48d21f4fca75e1f012ee881eb741a703051ee338 Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 11 Sep 2017 22:34:16 -0700 Subject: tests - integration - fix bad cherry-pick --- test/integration/lib/first-time.js | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) (limited to 'test') diff --git a/test/integration/lib/first-time.js b/test/integration/lib/first-time.js index c5ecfef95..38a94e551 100644 --- a/test/integration/lib/first-time.js +++ b/test/integration/lib/first-time.js @@ -5,13 +5,11 @@ QUnit.module('first time usage') QUnit.test('render init screen', (assert) => { const done = assert.async() runFirstTimeUsageTest(assert).then(done).catch((err) => { - assert.notOk(err, 'Should not error') + assert.notOk(err, `Error was thrown: ${err.stack}`) done() }) }) -<<<<<<< HEAD -======= // QUnit.testDone(({ module, name, total, passed, failed, skipped, todo, runtime }) => { // if (failed > 0) { // const app = $('iframe').contents()[0].documentElement @@ -20,36 +18,29 @@ QUnit.test('render init screen', (assert) => { // } // }) ->>>>>>> 5c53bab... test - integration - drop testem for karma async function runFirstTimeUsageTest(assert, done) { await timeout() const app = $('#app-content .mock-app-root') - const recurseNotices = async () => { + // recurse notices + while (true) { const button = app.find('button') if (button.html() === 'Accept') { + // still notices to accept const termsPage = app.find('.markdown')[0] termsPage.scrollTop = termsPage.scrollHeight await timeout() button.click() -<<<<<<< HEAD - await wait() - await recurseNotices() -======= await timeout() ->>>>>>> 5c53bab... test - integration - drop testem for karma } else { - await wait() + // exit loop + break } } -<<<<<<< HEAD - await recurseNotices() -======= await timeout() ->>>>>>> 5c53bab... test - integration - drop testem for karma // Scroll through terms const title = app.find('h1').text() @@ -144,4 +135,4 @@ function timeout(time) { resolve() }, time * 3 || 1500) }) -} +} \ No newline at end of file -- cgit v1.2.3