diff --git a/src/puppet-web.js b/src/puppet-web.js index e65e844fd4d17a8a5672035c3b223fbe8f51ae6c..fbf5067216be789b58f23a86e22459a3d58b4328 100644 --- a/src/puppet-web.js +++ b/src/puppet-web.js @@ -116,7 +116,7 @@ class PuppetWeb extends Puppet { return co.call(this, function* () { yield this.browser.init() - yield this.browser.open() + yield this.browser.open('https://res.wx.qq.com/zh_CN/htmledition/v2/images/icon/ico_loading28a2f7.gif') yield this.checkSession() yield this.loadSession().catch(e => { log.verbose('PuppetWeb', 'loadSession rejected: %s', e) /* fail safe */ }) yield this.checkSession() @@ -270,6 +270,9 @@ class PuppetWeb extends Puppet { return this.send(m) } + /** + * logout from browser, then server will emit `logout` event + */ logout() { return this.bridge.logout() } getContact(id) { return this.bridge.getContact(id) } diff --git a/test/puppet-web-spec.js b/test/puppet-web-spec.js index 447cdc43c62202a7b02857fa8dc39779fa718d45..fb2a7edbe01f053bd2f967d7b3db16c465b6a843 100644 --- a/test/puppet-web-spec.js +++ b/test/puppet-web-spec.js @@ -40,22 +40,22 @@ function dingSocket(server) { }) } -false && test('PuppetWeb smoke testing', function(t) { - let pw - co(function* () { - pw = new PuppetWeb({port: PORT, head: HEAD, session: SESSION}) - t.ok(pw, 'new PuppetWeb') +test('PuppetWeb smoke testing', function(t) { + let pw = new PuppetWeb({port: PORT, head: HEAD, session: SESSION}) + t.ok(pw, 'new PuppetWeb') + co(function* () { yield pw.init() t.pass('pw full inited') - t.equal(pw.isLogined() , false , 'instance not logined') + t.equal(pw.logined() , false , 'should be not logined') // XXX find a better way to mock... - pw.bridge.getUserName = function () { return Promise.resolve('mockedUserName') } + pw.bridge.getUserName = function() { return Promise.resolve('mockedUserName') } + pw.getContact = function() { return Promise.resolve('dummy') } const p1 = new Promise((resolve) => { pw.once('login', r => { - t.equal(pw.isLogined() , true , 'logined after login event') + t.equal(pw.logined() , true , 'should be logined after emit login event') resolve() }) }) @@ -64,51 +64,49 @@ false && test('PuppetWeb smoke testing', function(t) { const p2 = new Promise((resolve) => { pw.once('logout', r => { - t.equal(pw.isLogined() , false , 'logouted after logout event') - resolve() + process.nextTick(() => { // wait to next tick for pw clean logined user status + // log.verbose('TestPuppetWeb', 'on(logout) received %s, islogined: %s', r, pw.logined()) + t.equal(pw.logined() , false , 'logouted after logout event') + resolve() + }) }) }) pw.server.emit('logout') yield p2 - }) .catch(e => t.fail(e)) // Reject .then(r => { // Finally 1 - log.warn('TestPuppetWeb', 'finally()') - return pw.quit() + // log.warn('TestPuppetWeb', 'finally()') + pw.quit() + .then(t.end) }) - .then(r => { t.end() }) // Finally 2 .catch(e => t.fail(e)) // Exception }) -// WTF? -false && test('Puppet Web server/browser communication', function(t) { - let pw2 - co(function* () { - pw = new PuppetWeb({port: PORT, head: HEAD, session: SESSION}) - t.ok(pw2, 'new PuppetWeb') - - yield Promise.resolve() +test('Puppet Web server/browser communication', function(t) { + let pw = new PuppetWeb({port: PORT, head: HEAD, session: SESSION}) + t.ok(pw, 'new PuppetWeb') - yield pw2.init() - t.pass('pw2 inited') + co(function* () { + yield pw.init() + t.pass('pw inited') - const retSocket = yield dingSocket(pw2.server) + const retSocket = yield dingSocket(pw.server) t.equal(retSocket, 'dong', 'dingSocket got dong') }) - .catch(e => { + .catch(e => { // Reject log.warn('TestPuppetWeb', 'error: %s', e) t.fail(e) - }) // Reject + }) .then(r => { // Finally - pw2.quit() - t.end() + pw.quit() + .then(t.end) }) .catch(e => { t.fail(e) }) // Exception - }) -false && test('Puppet Web WTF server/browser communication', function(t) { +/* +false && test('Puppet Web promise version of server/browser communication', function(t) { pw = new PuppetWeb({port: PORT, head: HEAD, session: SESSION}) t.ok(pw, 'new PuppetWeb') @@ -140,6 +138,7 @@ false && test('Puppet Web WTF server/browser communication', function(t) { throw e }) // Exception }) +*/ test('Puppet Web browser session save & load', function(t) { let pw = new PuppetWeb({port: PORT, head: HEAD, session: SESSION}) @@ -203,14 +202,6 @@ test('Puppet Web browser session save & load', function(t) { const cookieAfterQuit = yield pw.browser.driver.manage().getCookie(EXPECTED_COOKIE.name) t.equal(cookieAfterQuit.name, EXPECTED_COOKIE.name, 'cookie from getCookie() after browser quit, should load the right cookie back') - }) - .catch(e => { // Reject - log.warn('TestPuppetWeb', 'error: %s', e) - t.fail(e) - }) - .then(r => { // Finally - pw.quit() - t.end() // clean require('fs').unlink(SESSION, err => { if (err) { @@ -218,6 +209,12 @@ test('Puppet Web browser session save & load', function(t) { } }) }) + .catch(e => { // Reject + log.warn('TestPuppetWeb', 'error: %s', e) + t.fail(e) + }) + .then(r => { // Finally + pw.quit().then(t.end) + }) .catch(e => { t.fail(e) }) // Exception - })