Skip to content
This repository has been archived by the owner on Jul 8, 2023. It is now read-only.

Commit

Permalink
➕ implement disconnected event for Browser (#1)
Browse files Browse the repository at this point in the history
  • Loading branch information
deepsweet committed Aug 9, 2018
1 parent 90170c8 commit d22b66d
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 24 deletions.
65 changes: 42 additions & 23 deletions src/api/browser.ts
Original file line number Diff line number Diff line change
@@ -1,35 +1,54 @@
import EventEmitter from 'events'
import { TSend } from '../protocol'
import createPage from './page'

const createBrowser = (send: TSend, onEnd: () => void) => ({
close: async (): Promise<void> => {
await send('Marionette:Quit')
onEnd()
},
const createBrowser = (send: TSend) => {
const eventEmitter = new EventEmitter()

disconnect: async (): Promise<void> => {
await send('WebDriver:DeleteSession')
onEnd()
},
return {
on: (event: string, callback: () => void) => {
eventEmitter.on(event, callback)
},

newPage: async () => {
await send('WebDriver:ExecuteScript', {
script: 'window.open()'
})
once: (event: string, callback: () => void) => {
eventEmitter.once(event, callback)
},

const windows = await send('WebDriver:GetWindowHandles')
off: (event: string, callback: () => void) => {
eventEmitter.off(event, callback)
},

await send('WebDriver:SwitchToWindow', {
focus: true,
name: windows[windows.length - 1]
})
close: async (): Promise<void> => {
await send('Marionette:Quit')

return createPage(send)
},
eventEmitter.emit('disconnected')
},

pages: (): Promise<number[]> => {
return send('WebDriver:GetWindowHandles')
disconnect: async (): Promise<void> => {
await send('WebDriver:DeleteSession')

eventEmitter.emit('disconnected')
},

newPage: async () => {
await send('WebDriver:ExecuteScript', {
script: 'window.open()'
})

const windows = await send('WebDriver:GetWindowHandles')

await send('WebDriver:SwitchToWindow', {
focus: true,
name: windows[windows.length - 1]
})

return createPage(send)
},

pages: (): Promise<number[]> => {
return send('WebDriver:GetWindowHandles')
}
}
})
}

export default createBrowser
6 changes: 5 additions & 1 deletion src/api/foxr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,11 @@ const foxr = {

await send('WebDriver:NewSession', { capabilities: {} })

return createBrowser(send, disconnect)
const browser = await createBrowser(send)

browser.once('disconnected', disconnect)

return browser
}
}

Expand Down

0 comments on commit d22b66d

Please sign in to comment.