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.