* Set current page * @param {object} page page to set
(page)
| 1068 | * @param {object} page page to set |
| 1069 | */ |
| 1070 | async _setPage(page) { |
| 1071 | // Clean up previous page event listeners |
| 1072 | if (this.page && this.page !== page) { |
| 1073 | try { |
| 1074 | this.page.removeAllListeners('crash') |
| 1075 | this.page.removeAllListeners('dialog') |
| 1076 | this.page.removeAllListeners('load') |
| 1077 | this.page.removeAllListeners('console') |
| 1078 | this.page.removeAllListeners('requestfinished') |
| 1079 | } catch (e) { |
| 1080 | console.warn('Warning cleaning previous page listeners:', e.message) |
| 1081 | } |
| 1082 | } |
| 1083 | |
| 1084 | page = await page |
| 1085 | this._addPopupListener(page) |
| 1086 | this.page = page |
| 1087 | if (!page) return |
| 1088 | |
| 1089 | try { |
| 1090 | this.browserContext.setDefaultTimeout(0) |
| 1091 | page.setDefaultNavigationTimeout(this.options.getPageTimeout) |
| 1092 | page.setDefaultTimeout(this.options.timeout) |
| 1093 | |
| 1094 | page.on('crash', async () => { |
| 1095 | console.log('ERROR: Page has crashed, closing page!') |
| 1096 | try { |
| 1097 | await page.close() |
| 1098 | } catch (e) { |
| 1099 | console.warn('Warning during crashed page cleanup:', e.message) |
| 1100 | } |
| 1101 | }) |
| 1102 | |
| 1103 | this.context = await this.page |
| 1104 | this.contextLocator = null |
| 1105 | await page.bringToFront() |
| 1106 | } catch (e) { |
| 1107 | console.warn('Warning during page setup:', e.message) |
| 1108 | this.context = await this.page |
| 1109 | this.contextLocator = null |
| 1110 | } |
| 1111 | } |
| 1112 | |
| 1113 | /** |
| 1114 | * Add the 'dialog' event listener to a page |
no test coverage detected