1
+ import { GlobalBrowserErrorConsole , GlobalBrowserErrorJs , GlobalBrowserErrorResponse } from '@data/types/globals' ;
1
2
import {
2
3
APIRequestContext ,
3
4
BrowserContext ,
@@ -20,7 +21,7 @@ export default {
20
21
* @param attempt {number} Number of attempts to restart browser creation if function throw error
21
22
* @return {Promise<Browser> }
22
23
*/
23
- async createBrowser ( attempt = 1 ) : Promise < Browser > {
24
+ async createBrowser ( attempt : number = 1 ) : Promise < Browser > {
24
25
const browsers : Record < string , BrowserType > = {
25
26
chromium,
26
27
webkit,
@@ -95,8 +96,8 @@ export default {
95
96
async newTab ( context : BrowserContext ) : Promise < Page > {
96
97
const page = await context . newPage ( ) ;
97
98
98
- if ( global . BROWSER . interceptErrors ) {
99
- await this . interceptAllErrors ( page ) ;
99
+ if ( global . BROWSER . captureErrors ) {
100
+ await this . captureAllErrors ( page ) ;
100
101
}
101
102
return page ;
102
103
} ,
@@ -119,11 +120,63 @@ export default {
119
120
await browser . close ( ) ;
120
121
} ,
121
122
123
+ /**
124
+ * Get last opened tab (The current active tab)
125
+ * @param browser {Browser} Browser given
126
+ * @returns {Promise<Page> }
127
+ */
128
+ async getLastOpenedTab ( browser : Browser ) : Promise < Page | null > {
129
+ // Get contexts
130
+ const contexts = browser . contexts ( ) ;
131
+
132
+ // Return null if no context found
133
+ if ( contexts . length === 0 ) {
134
+ return null ;
135
+ }
136
+
137
+ // Get pages from last created context
138
+ const tabs = contexts [ contexts . length - 1 ] . pages ( ) ;
139
+
140
+ // Return null if no tabs found
141
+ if ( tabs . length === 0 ) {
142
+ return null ;
143
+ }
144
+
145
+ return tabs [ tabs . length - 1 ] ;
146
+ } ,
147
+
148
+ /**
149
+ * Returns the number of tabs
150
+ * @param browserContext {BrowserContext} Browser given
151
+ * @returns {number }
152
+ */
153
+ getNumberTabs ( browserContext : BrowserContext ) : number {
154
+ // Get pages from last created context
155
+ return browserContext . pages ( ) . length ;
156
+ } ,
157
+
158
+ /**
159
+ * Returns if errors are captured
160
+ * @returns boolean
161
+ */
162
+ isErrorsCaptured ( ) : boolean {
163
+ return global . BROWSER . captureErrors ;
164
+ } ,
165
+
166
+ /**
167
+ * Define if errors are captured
168
+ * @param captureErrors {boolean}
169
+ * @returns void
170
+ */
171
+ setErrorsCaptured ( captureErrors : boolean ) : void {
172
+ global . BROWSER . captureErrors = captureErrors ;
173
+ } ,
174
+
122
175
/**
123
176
* Intercept response errors
124
177
* @param page {Page} Browser tab given
125
178
*/
126
- interceptResponseErrors ( page : Page ) : void {
179
+ captureResponseErrors ( page : Page ) : void {
127
180
page . on ( 'response' , ( response ) => {
128
181
const status = response . status ( ) . toString ( ) ;
129
182
const url = page . url ( ) ;
@@ -139,7 +192,7 @@ export default {
139
192
* Intercept js errors
140
193
* @param page {Page} Browser tab given
141
194
*/
142
- interceptJsErrors ( page : Page ) : void {
195
+ captureJsErrors ( page : Page ) : void {
143
196
page . on ( 'pageerror' , ( e ) => {
144
197
global . browserErrors . js . push (
145
198
{
@@ -154,7 +207,7 @@ export default {
154
207
* Intercept console errors
155
208
* @param page {Page} Browser tab given
156
209
*/
157
- interceptConsoleErrors ( page : Page ) : void {
210
+ captureConsoleErrors ( page : Page ) : void {
158
211
page . on ( 'console' , ( msg ) => {
159
212
if ( msg . type ( ) === 'error' ) {
160
213
global . browserErrors . console . push ( {
@@ -169,44 +222,51 @@ export default {
169
222
* Intercept all errors (response, js, console)
170
223
* @param page {Page} Browser tab given
171
224
*/
172
- interceptAllErrors ( page : Page ) : void {
173
- this . interceptResponseErrors ( page ) ;
174
- this . interceptJsErrors ( page ) ;
175
- this . interceptConsoleErrors ( page ) ;
225
+ captureAllErrors ( page : Page ) : void {
226
+ this . captureResponseErrors ( page ) ;
227
+ this . captureJsErrors ( page ) ;
228
+ this . captureConsoleErrors ( page ) ;
176
229
} ,
177
230
178
231
/**
179
- * Get last opened tab (The current active tab)
180
- * @param browser {Browser} Browser given
181
- * @returns {Promise<Page> }
232
+ * Returns Console captured errors
182
233
*/
183
- async getLastOpenedTab ( browser : Browser ) : Promise < Page | null > {
184
- // Get contexts
185
- const contexts = browser . contexts ( ) ;
234
+ getConsoleErrors ( ) : Array < GlobalBrowserErrorConsole > {
235
+ return global . browserErrors . console ;
236
+ } ,
186
237
187
- // Return null if no context found
188
- if ( contexts . length === 0 ) {
189
- return null ;
190
- }
238
+ /**
239
+ * Returns JS captured errors
240
+ */
241
+ getJsErrors ( ) : Array < GlobalBrowserErrorJs > {
242
+ return global . browserErrors . js ;
243
+ } ,
191
244
192
- // Get pages from last created context
193
- const tabs = contexts [ contexts . length - 1 ] . pages ( ) ;
245
+ /**
246
+ * Returns Response captured errors
247
+ */
248
+ getResponseErrors ( ) : Array < GlobalBrowserErrorResponse > {
249
+ return global . browserErrors . responses ;
250
+ } ,
194
251
195
- // Return null if no tabs found
196
- if ( tabs . length === 0 ) {
197
- return null ;
198
- }
252
+ /**
253
+ * Reset Console captured errors
254
+ */
255
+ resetConsoleErrors ( ) : void {
256
+ global . browserErrors . console = [ ] ;
257
+ } ,
199
258
200
- return tabs [ tabs . length - 1 ] ;
259
+ /**
260
+ * Reset JS captured errors
261
+ */
262
+ resetJsErrors ( ) : void {
263
+ global . browserErrors . js = [ ] ;
201
264
} ,
202
265
203
266
/**
204
- * Returns the number of tabs
205
- * @param browserContext {BrowserContext} Browser given
206
- * @returns {number }
267
+ * Reset Response captured errors
207
268
*/
208
- getNumberTabs ( browserContext : BrowserContext ) : number {
209
- // Get pages from last created context
210
- return browserContext . pages ( ) . length ;
269
+ resetResponseErrors ( ) : void {
270
+ global . browserErrors . responses = [ ] ;
211
271
} ,
212
272
} ;
0 commit comments