🏡 index : quine-global/webdriverio.git

# Bidi Examples

## Logging

The following examples show how to capture logs from the browser in real-time:

```javascript { interpreter=node mimeType=application/json terminalRows=1 }
import { remote } from 'webdriverio'
const browser = await remote({
    logLevel: 'error',
    capabilities: {
        webSocketUrl: true,
        browserName: 'firefox'
    }
})

await browser.sessionSubscribe({
    events: ['log.entryAdded']
})

browser.on('log.entryAdded', (entryAdded) => console.log(JSON.stringify(entryAdded, null, 4)))
await browser.execute(() => console.log('Hello Bidi'))
await browser.deleteSession()
```

Or listen for network events:

```javascript { mimeType=application/json terminalRows=1 }
import { remote } from 'webdriverio'
const browser = await remote({
    logLevel: 'error',
    capabilities: {
        webSocketUrl: true,
        browserName: 'chrome'
    }
})

await browser.sessionSubscribe({
    events: ['network.responseCompleted']
})

browser.on('network.responseCompleted', (networkResponse) => console.log(JSON.stringify(networkResponse, null, 4)))
await browser.url('https://webdriver.io')
await browser.deleteSession()
```

## Scripting

The following example shows how to create a preload script:

```javascript { interpreter=node terminalRows=2 }
import { remote } from 'webdriverio'
const browser = await remote({
    logLevel: 'error',
    capabilities: {
        webSocketUrl: true,
        browserName: 'chrome'
    }
})

await browser.scriptAddPreloadScript({
    functionDeclaration: `() => { window.bar='foo'; }`
})

await browser.url('https://webdriver.io')
await browser.pause(2000)
console.log(await browser.execute(() => window.bar))
await browser.deleteSession()
```