Log del Browser
Quando esegui i test, il browser potrebbe registrare informazioni importanti che potrebbero interessarti o su cui potresti voler fare delle asserzioni.
- Bidi
- Classic (Deprecated)
Quando utilizzi WebDriver Bidi, che è il modo predefinito con cui WebdriverIO automatizza il browser, puoi sottoscriverti agli eventi provenienti dal browser. Per gli eventi di log, devi ascoltare log.entryAdded'
, ad esempio:
await browser.sessionSubscribe({ events: ['log.entryAdded'] })
/**
* returns: {"type":"console","method":"log","realm":null,"args":[{"type":"string","value":"Hello Bidi"}],"level":"info","text":"Hello Bidi","timestamp":1657282076037}
*/
browser.on('log.entryAdded', (entryAdded) => console.log('received %s', entryAdded))
In un test puoi semplicemente aggiungere gli eventi di log a un array e verificare quell'array una volta completata l'azione, ad esempio:
import type { local } from 'webdriver'
describe('should log when doing a certain action', () => {
const logs: string[] = []
function logEvents (event: local.LogEntry) {
logs.push(event.text) // add log message to the array
}
before(async () => {
await browser.sessionSubscribe({ events: ['log.entryAdded'] })
browser.on('log.entryAdded', logEvents)
})
it('should trigger the console event', () => {
// trigger the browser send a message to the console
...
// assert if log was captured
expect(logs).toContain('Hello Bidi')
})
// clean up listener afterwards
after(() => {
browser.off('log.entryAdded', logEvents)
})
})
Se utilizzi ancora WebDriver Classic o hai disabilitato l'utilizzo di Bidi tramite la capability 'wdio:enforceWebDriverClassic': true
, puoi utilizzare il comando JSONWire getLogs
per recuperare gli ultimi log. Poiché WebdriverIO ha rimosso questi comandi deprecati, dovrai utilizzare il JSONWP Service per aggiungere nuovamente il comando alla tua istanza del browser.
Dopo aver aggiunto o inizializzato il servizio, puoi recuperare i log tramite:
const logs = await browser.getLogs('browser')
const logMessage = logs.find((log) => log.message.includes('Hello Bidi'))
expect(logMessage).toBeTruthy()
Nota: il comando getLogs
può recuperare solo i log più recenti dal browser. Potrebbe eliminare i messaggi di log se diventano troppo vecchi.
Tieni presente che puoi utilizzare questo metodo per recuperare i messaggi di errore e verificare se la tua applicazione ha riscontrato errori.