Skip to content

Commit 8b31a63

Browse files
authored
fix: grab browser logs using bidi (#4754)
1 parent 5fc5f47 commit 8b31a63

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

lib/helper/WebDriver.js

+11-5
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ const { dontSeeTraffic, seeTraffic, grabRecordedNetworkTraffics, stopRecordingTr
2424

2525
const SHADOW = 'shadow'
2626
const webRoot = 'body'
27+
let browserLogs = []
2728

2829
/**
2930
* ## Configuration
@@ -621,6 +622,10 @@ class WebDriver extends Helper {
621622
}
622623

623624
this.browser.on('dialog', () => {})
625+
626+
await this.browser.sessionSubscribe({ events: ['log.entryAdded'] })
627+
this.browser.on('log.entryAdded', logEvents)
628+
624629
return this.browser
625630
}
626631

@@ -658,6 +663,7 @@ class WebDriver extends Helper {
658663
if (!(err.message.indexOf("Storage is disabled inside 'data:' URLs.") > -1)) throw err
659664
})
660665
await this.closeOtherTabs()
666+
browserLogs = []
661667
return this.browser
662668
}
663669

@@ -1522,11 +1528,7 @@ class WebDriver extends Helper {
15221528
* {{> grabBrowserLogs }}
15231529
*/
15241530
async grabBrowserLogs() {
1525-
if (this.browser.isW3C) {
1526-
this.debug('Logs not available in W3C specification')
1527-
return
1528-
}
1529-
return this.browser.getLogs('browser')
1531+
return browserLogs
15301532
}
15311533

15321534
/**
@@ -3141,4 +3143,8 @@ function prepareLocateFn(context) {
31413143
}
31423144
}
31433145

3146+
function logEvents(event) {
3147+
browserLogs.push(event.text) // add log message to the array
3148+
}
3149+
31443150
module.exports = WebDriver

test/helper/WebDriver_test.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -937,7 +937,7 @@ describe('WebDriver', function () {
937937
})
938938
})
939939

940-
xdescribe('#grabBrowserLogs', () => {
940+
describe('#grabBrowserLogs', () => {
941941
it('should grab browser logs', async () => {
942942
await wd.amOnPage('/')
943943
await wd.executeScript(() => {
@@ -946,12 +946,12 @@ describe('WebDriver', function () {
946946
const logs = await wd.grabBrowserLogs()
947947
console.log('lololo', logs)
948948

949-
const matchingLogs = logs.filter(log => log.message.indexOf('Test log entry') > -1)
949+
const matchingLogs = logs.filter(log => log.indexOf('Test log entry') > -1)
950950
assert.equal(matchingLogs.length, 1)
951951
})
952952

953953
it('should grab browser logs across pages', async () => {
954-
wd.amOnPage('/')
954+
await wd.amOnPage('/')
955955
await wd.executeScript(() => {
956956
console.log('Test log entry 1')
957957
})
@@ -963,8 +963,8 @@ describe('WebDriver', function () {
963963

964964
const logs = await wd.grabBrowserLogs()
965965

966-
const matchingLogs = logs.filter(log => log.message.indexOf('Test log entry') > -1)
967-
assert.equal(matchingLogs.length, 2)
966+
const matchingLogs = logs.filter(log => log.indexOf('Test log entry') > -1)
967+
assert.equal(matchingLogs.length, 5)
968968
})
969969
})
970970

0 commit comments

Comments
 (0)