@@ -20,16 +20,27 @@ export const extractCss = async url => {
20
20
await page . coverage . startCSSCoverage ( ) . catch ( ( ) => { } )
21
21
22
22
url = normalizeUrl ( url , { stripWWW : false } )
23
- const response = await page . goto ( url , { waitUntil : 'networkidle0' } )
23
+ let response
24
+
25
+ try {
26
+ response = await page . goto ( url , {
27
+ waitUntil : 'networkidle0' ,
28
+ timeout : 9000
29
+ } )
30
+ } catch ( error ) {
31
+ await browser . close ( )
32
+
33
+ console . error ( error . name )
34
+ console . error ( error . stack )
35
+ throw new Error ( `There was an error retrieving CSS from ${ url } . No response received from server.` )
36
+ }
24
37
25
38
// Make sure that we only try to extract CSS from valid pages.
26
39
// Bail out if the response is an invalid request (400, 500)
27
40
if ( response . status ( ) >= 400 ) {
28
41
await browser . close ( )
29
- return Promise . reject (
30
- new Error (
31
- `There was an error retrieving CSS from ${ url } .\n\tHTTP status code: ${ response . statusCode } (${ response . statusText } )`
32
- )
42
+ throw new Error (
43
+ `There was an error retrieving CSS from ${ url } .\n\tHTTP status code: ${ response . statusCode } (${ response . statusText } )`
33
44
)
34
45
}
35
46
@@ -41,11 +52,11 @@ export const extractCss = async url => {
41
52
const css = await response . text ( )
42
53
await browser . close ( )
43
54
44
- return Promise . resolve ( [ {
55
+ return [ {
45
56
type : 'file' ,
46
57
href : url ,
47
58
css
48
- } ] )
59
+ } ]
49
60
}
50
61
51
62
// Coverage contains a lot of <style> and <link> CSS,
@@ -89,6 +100,9 @@ export const extractCss = async url => {
89
100
// Filter out empty style="" attributes
90
101
. filter ( Boolean )
91
102
} )
103
+
104
+ await browser . close ( )
105
+
92
106
const inlineCss = inlineCssRules
93
107
. map ( rule => `[x-extract-css-inline-style] { ${ rule } }` )
94
108
. map ( css => ( { type : 'inline' , href : url , css} ) )
@@ -109,7 +123,5 @@ export const extractCss = async url => {
109
123
. concat ( styleSheetsApiCss )
110
124
. concat ( inlineCss )
111
125
112
- await browser . close ( )
113
-
114
- return Promise . resolve ( resources )
126
+ return resources
115
127
}
0 commit comments