From a6d81e6e03c983b5f7875f50e290213dfcec935a Mon Sep 17 00:00:00 2001 From: "Zhuohuan LI (CARPE DIEM)" Date: Sat, 12 Nov 2016 23:21:40 +0800 Subject: [PATCH] more check for https://travis-ci.org/wechaty/wechaty/jobs/175254596#L1220 --- src/puppet-web/bridge.ts | 4 +++- src/puppet-web/browser-driver.ts | 37 ++++++++++++++++---------------- src/puppet-web/browser.ts | 4 +++- test/puppet-web/watchdog.spec.ts | 6 +++--- 4 files changed, 28 insertions(+), 23 deletions(-) diff --git a/src/puppet-web/bridge.ts b/src/puppet-web/bridge.ts index f99901b3..6c739a5a 100644 --- a/src/puppet-web/bridge.ts +++ b/src/puppet-web/bridge.ts @@ -376,7 +376,9 @@ export class Bridge { try { const noWechaty = await this.execute('return typeof WechatyBro === "undefined"') if (noWechaty) { - throw new Error('there is no WechatyBro in browser(yet)') + const e = new Error('there is no WechatyBro in browser(yet)') + this.puppet.browser.dead(e) + throw e } } catch (e) { log.error('PuppetWebBridge', 'proxyWechaty() noWechaty exception: %s', e.stack) diff --git a/src/puppet-web/browser-driver.ts b/src/puppet-web/browser-driver.ts index f4777a76..e9b5714c 100644 --- a/src/puppet-web/browser-driver.ts +++ b/src/puppet-web/browser-driver.ts @@ -29,19 +29,19 @@ export class BrowserDriver { public async init(): Promise { log.verbose('PuppetWebBrowserDriver', 'init() for head: %s', this.head) - if (this.driver) { - try { - // const valid = await this.valid(this.driver) - // if (valid) { - // // await this.driver.close() - await this.driver.quit() - // } - } catch (e) { - log.verbose('PuppetWebBrowserDriver', 'init() this.driver.quit() soft exception: %s' - , e.stack - ) - } - } + // if (this.driver) { + // try { + // // const valid = await this.valid(this.driver) + // // if (valid) { + // // // await this.driver.close() + // await this.driver.quit() + // // } + // } catch (e) { + // log.verbose('PuppetWebBrowserDriver', 'init() this.driver.quit() soft exception: %s' + // , e.message + // ) + // } + // } switch (this.head) { case 'phantomjs': @@ -137,11 +137,10 @@ export class BrowserDriver { log.verbose('PuppetWebBrowserDriver', 'getChromeDriver() new Builder() done') - const valid = await this.valid(driver) - - log.verbose('PuppetWebBrowserDriver', 'getChromeDriver() valid() done: %s', valid) + const isValid = await this.valid(driver) + log.verbose('PuppetWebBrowserDriver', 'getChromeDriver() valid() done: %s', isValid) - if (!valid) { + if (!isValid) { err = new Error('getChromeDriver() got invalid driver') log.warn('PuppetWebBrowserDriver', err.message) driver = null @@ -245,6 +244,7 @@ export class BrowserDriver { log.verbose('PuppetWebBrowserDriver', 'valid()') try { + log.verbose('PuppetWebBrowserDriver', 'valid() getSession()') const session = await new Promise((resolve, reject) => { // reject const timer = setTimeout(() => { @@ -256,13 +256,14 @@ export class BrowserDriver { // resolve driver.getSession() .then(session => { + log.verbose('PuppetWebBrowserDriver', 'valid() getSession() done') clearTimeout(timer) resolve(session) }) }) - log.verbose('PuppetWebBrowserDriver', 'valid() driver.getSession() done') + log.verbose('PuppetWebBrowserDriver', 'valid() driver.getSession() done(out)') if (!session) { log.verbose('PuppetWebBrowserDriver', 'valid() found an invalid driver') diff --git a/src/puppet-web/browser.ts b/src/puppet-web/browser.ts index a94a83e8..3a4797c6 100644 --- a/src/puppet-web/browser.ts +++ b/src/puppet-web/browser.ts @@ -202,6 +202,8 @@ export class Browser extends EventEmitter { } public async clean(kill = false): Promise { + log.verbose('PuppetWebBrowser', 'clean(kill=%s)', kill) + const max = 30 const backoff = 100 @@ -355,7 +357,7 @@ export class Browser extends EventEmitter { return false // browser not ok, dead } - public dead(forceReason?: string): boolean { + public dead(forceReason?: any): boolean { // too noisy! // log.silly('PuppetWebBrowser', 'dead() checking ... ') diff --git a/test/puppet-web/watchdog.spec.ts b/test/puppet-web/watchdog.spec.ts index b771ba82..13952c6e 100644 --- a/test/puppet-web/watchdog.spec.ts +++ b/test/puppet-web/watchdog.spec.ts @@ -83,9 +83,9 @@ test('timer', async t => { // timeout = 84,500 for {max: 13, backoff: 1000} const timeout = max * (backoff * max) / 2 - return retryPromise({max: max, backoff: backoff}, async function(attempt) { - log.silly('TestPuppetWeb', 'waitDing() retryPromise: attampt %s/%s time for timeout %s' - , attempt, max, timeout) + return retryPromise({max, backoff }, async function(attempt) { + log.silly('TestPuppetWeb', 'waitDing() retryPromise: attampt %s/%s time for timeout %s', + attempt, max, timeout) try { const r = await pw.ding(data) -- GitLab