From 93585405bfa76267e45b56e66c0375e295593663 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 1 Jun 2024 11:04:38 +0530 Subject: [PATCH] feat: tab management for screencast based on page instance --- .../classes/RemoteBrowser.ts | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/server/src/browser-management/classes/RemoteBrowser.ts b/server/src/browser-management/classes/RemoteBrowser.ts index 0e17248c..03e2c4ff 100644 --- a/server/src/browser-management/classes/RemoteBrowser.ts +++ b/server/src/browser-management/classes/RemoteBrowser.ts @@ -257,6 +257,28 @@ export class RemoteBrowser { return this.currentPage; }; + /** + * Changes the active page to the page instance on the given index + * available in pages array on the {@link BrowserContext}. + * Automatically stops the screencast session on the previous page and starts the new one. + * @param tabIndex index of the page in the pages array on the {@link BrowserContext} + * @returns {Promise} + */ + private changeTab = async (tabIndex: number) : Promise=> { + const page = this.currentPage?.context().pages()[tabIndex]; + if (page) { + await this.stopScreencast(); + this.currentPage = page; + await this.currentPage.setViewportSize({height: 720, width: 1280}) + this.client = await this.currentPage.context().newCDPSession(this.currentPage); + this.socket.emit('urlChanged', this.currentPage.url()); + await this.makeAndEmitScreenshot(); + await this.subscribeToScreencast(); + } else { + logger.log('error', `${tabIndex} index out of range of pages`) + } + } + /** * Initiates screencast of the remote browser through socket, * registers listener for rerender event and emits the loaded event.