提交 f932dea8 编写于 作者: Huan (李卓桓)'s avatar Huan (李卓桓)

more check for exception/rejection

上级 e5b1ad6a
......@@ -239,27 +239,35 @@ export class BrowserDriver {
try {
log.verbose('PuppetWebBrowserDriver', 'valid() getSession()')
const session = await new Promise((resolve, reject) => {
// reject
const timer = setTimeout(() => {
const e = new Error('valid() driver.getSession() timeout(halt?)')
log.warn('PuppetWebBrowserDriver' , e.message)
reject(e)
// 1. Promise rejected
return reject(e)
}, 67 * 1000)
// resolve
driver.getSession()
.then(session => {
log.verbose('PuppetWebBrowserDriver', 'valid() getSession() done')
clearTimeout(timer)
resolve(session)
// 2. Promise resolved
return resolve(session)
})
.catch(e => {
log.warn('PuppetWebBrowserDriver', 'valid() getSession() rejected: %s', e && e.message || e)
// 3. Promise rejected
return reject(e)
})
})
log.verbose('PuppetWebBrowserDriver', 'valid() driver.getSession() done(out)')
log.verbose('PuppetWebBrowserDriver', 'valid() driver.getSession() done()')
if (!session) {
log.verbose('PuppetWebBrowserDriver', 'valid() found an invalid driver')
......
......@@ -251,7 +251,7 @@ async function onServerLogin(this: PuppetWeb, data, attempt = 0): Promise<void>
this.userId = await this.bridge.getUserName()
if (!this.userId) {
log.verbose('PuppetWebEvent', 'onServerLogin: browser not full loaded(%d), retry later', attempt)
log.verbose('PuppetWebEvent', 'onServerLogin: browser not fully loaded(%d), retry later', attempt)
setTimeout(onServerLogin.bind(this, data, ++attempt), 500)
return
}
......
......@@ -54,36 +54,41 @@ test('retryPromise()', async t => {
})
test('WechatyBro.ding()', async t => {
const PORT = 58788
const browser = new Browser()
t.truthy(browser, 'should instanciated a browser')
try {
const PORT = 58788
const mockPuppet = {browser: browser}
const bridge = new Bridge(mockPuppet as PuppetWeb, PORT)
t.truthy(bridge, 'should instanciated a bridge with mocked puppet')
const browser = new Browser()
t.truthy(browser, 'should instanciated a browser')
await browser.init()
t.pass('should instanciated a browser')
const mockPuppet = {browser: browser}
const bridge = new Bridge(mockPuppet as PuppetWeb, PORT)
t.truthy(bridge, 'should instanciated a bridge with mocked puppet')
await browser.open()
t.pass('should open success')
await browser.init()
t.pass('should instanciated a browser')
await bridge.inject()
t.pass('should injected WechatyBro')
await browser.open()
t.pass('should open success')
const retDing = await bridge.execute('return WechatyBro.ding()')
t.is(retDing, 'dong', 'should got dong after execute WechatyBro.ding()')
await bridge.inject()
t.pass('should injected WechatyBro')
// @deprecated
// const retReady = await b.execute('return WechatyBro.isReady()')
// t.is(typeof retReady, 'boolean', 'should got a boolean return after execute WechatyBro.isReady()')
const retDing = await bridge.execute('return WechatyBro.ding()')
t.is(retDing, 'dong', 'should got dong after execute WechatyBro.ding()')
const retCode = await bridge.proxyWechaty('isLogin')
t.is(typeof retCode, 'boolean', 'should got a boolean after call proxyWechaty(isLogin)')
// @deprecated
// const retReady = await b.execute('return WechatyBro.isReady()')
// t.is(typeof retReady, 'boolean', 'should got a boolean return after execute WechatyBro.isReady()')
await bridge.quit()
t.pass('b.quit()')
await browser.quit()
t.pass('browser.quit()')
const retCode = await bridge.proxyWechaty('isLogin')
t.is(typeof retCode, 'boolean', 'should got a boolean after call proxyWechaty(isLogin)')
await bridge.quit()
t.pass('b.quit()')
await browser.quit()
t.pass('browser.quit()')
} catch (err) {
t.fail('exception: ' + err.message)
}
})
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册