Skip to content

Commit

Permalink
Improve screenshare slide navigation and error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
vpalmisano committed Feb 7, 2025
1 parent f70e54e commit 5429942
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 7 deletions.
14 changes: 10 additions & 4 deletions scripts/screenshare.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* global webrtcperf, webrtcperf_mouseClick, webrtcperf_keyPress */
/* global webrtcperf, webrtcperf_keypressText, webrtcperf_keyPress */

webrtcperf.startFakeScreenshare = (
{
Expand Down Expand Up @@ -91,11 +91,12 @@ webrtcperf.startFakeScreenshare = (

let cur = 0
advanceSlide = async () => {
webrtcperf.log(`advanceSlide embed: ${cur}/${slides}`)
if (cur >= slides) {
await webrtcperf_keyPress('Home')
cur = 0
} else {
await webrtcperf_mouseClick('iframe', width / 2, height / 2)
await webrtcperf_keypressText('iframe', ' ')
cur++
}
}
Expand Down Expand Up @@ -136,6 +137,7 @@ webrtcperf.startFakeScreenshare = (

let cur = 0
advanceSlide = async () => {
webrtcperf.log(`advanceSlide: ${cur}/${slides}`)
const next = cur === slidesElements.length - 1 ? 0 : cur + 1
await Promise.all([animateElement(slidesElements[cur], 'out'), animateElement(slidesElements[next], 'in')])
cur = next
Expand All @@ -144,8 +146,12 @@ webrtcperf.startFakeScreenshare = (

const loopIteration = async () => {
if (!document.querySelector('#webrtcperf-fake-screenshare')) return
if (drawTimestamp) drawTimestamp()
if (advanceSlide) await advanceSlide()
try {
if (drawTimestamp) drawTimestamp()
if (advanceSlide) await advanceSlide()
} catch (e) {
webrtcperf.log(`loopIteration error: ${e}`)
}
setTimeout(() => loopIteration(), delay)
}
loopIteration()
Expand Down
9 changes: 6 additions & 3 deletions src/session.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1349,9 +1349,12 @@ webrtcperf.VIDEO_URL = "http${this.serverUseHttps ? 's' : ''}://localhost:${this
for (const name of ['scripts/common.js', 'scripts/screenshare.js']) {
await this.screensharePage.evaluateOnNewDocument(fs.readFileSync(resolvePackagePath(name), 'utf8'))
}
await screensharePage.exposeFunction('webrtcperf_mouseClick', async (selector: string, x = 0, y = 0) => {
await screensharePage.click(selector, { offset: { x, y } })
})
await screensharePage.exposeFunction(
'webrtcperf_keypressText',
async (selector: string, text: string, delay = 20) => {
await screensharePage.type(selector, text, { delay })
},
)
await screensharePage.exposeFunction('webrtcperf_keyPress', async (key: KeyInput) => {
await screensharePage.keyboard.press(key)
})
Expand Down

0 comments on commit 5429942

Please sign in to comment.