@@ -11,7 +11,7 @@ async function sendDoM(storybookUrl, stories, storybookConfig, options) {
1111 const createBrowser = require ( 'browserless' )
1212 const browser = createBrowser ( )
1313
14- if ( ! fs . existsSync ( 'doms' ) ) {
14+ if ( ! fs . existsSync ( 'doms' ) ) {
1515 fs . mkdir ( 'doms' , ( err ) => {
1616 if ( err ) {
1717 console . error ( err ) ;
@@ -30,12 +30,12 @@ async function sendDoM(storybookUrl, stories, storybookConfig, options) {
3030 clone = new JSDOM ( html ) ;
3131
3232 // Serialize DOM
33- for ( element of clone . window . document . querySelectorAll ( 'img' ) ) {
33+ for ( element of clone . window . document . querySelectorAll ( 'img' ) ) {
3434 let image = new URL ( element . getAttribute ( 'src' ) , storybookUrl ) . href ;
3535 let format = path . extname ( image ) . replace ( / ^ ./ , '' ) ;
3636 format = format === 'svg' ? 'svg+xml' : format
3737 let imageAsBase64 = await getBase64 ( image ) ;
38- element . setAttribute ( 'src' , 'data:image/' + format + ';base64,' + imageAsBase64 ) ;
38+ element . setAttribute ( 'src' , 'data:image/' + format + ';base64,' + imageAsBase64 ) ;
3939 }
4040 await serializeCSSOM ( dom , clone ) ;
4141
@@ -55,9 +55,9 @@ async function sendDoM(storybookUrl, stories, storybookConfig, options) {
5555 for ( const [ storyId , storyInfo ] of Object . entries ( stories ) ) {
5656 const file = fs . readFileSync ( 'doms/' + storyId + '.html' ) ;
5757 let title = storyInfo . kind || storyInfo . title ;
58- title = title ? title . replaceAll ( '/' , '#' ) + ': ' : '' ;
58+ title = title ? title . replaceAll ( '/' , '#' ) + ': ' : '' ;
5959 filename = title + storyInfo . name ;
60- form . append ( 'files' , file , filename + '.html' ) ;
60+ form . append ( 'files' , file , filename + '.html' ) ;
6161 }
6262 form . append ( 'resolution' , storybookConfig . resolutions ) ;
6363 form . append ( 'browser' , storybookConfig . browsers ) ;
@@ -69,15 +69,15 @@ async function sendDoM(storybookUrl, stories, storybookConfig, options) {
6969
7070 githubURL = process . env . GITHUB_URL
7171 if ( githubURL ) {
72- form . append ( 'githubURL' , githubURL ) ;
72+ form . append ( 'githubURL' , githubURL ) ;
7373 }
7474
7575 // Send DOM to render API
7676 await axios . post ( constants [ options . env ] . RENDER_API_URL , form , {
7777 headers : {
7878 ...form . getHeaders ( )
7979 }
80- } )
80+ } )
8181 . then ( async function ( response ) {
8282 console . log ( '[smartui] Build URL: ' , response . data . buildURL ) ;
8383 console . log ( '[smartui] Build in progress...' ) ;
@@ -88,79 +88,24 @@ async function sendDoM(storybookUrl, stories, storybookConfig, options) {
8888 console . log ( '[smartui] Build failed: Error: ' , error . response . data . message ) ;
8989 } else {
9090 console . log ( '[smartui] Build failed: Error: ' , error . message ) ;
91- }
91+ }
9292 } ) ;
93-
94- fs . rm ( 'doms' , { recursive : true } , ( err ) => {
93+
94+ fs . rm ( 'doms' , { recursive : true } , ( err ) => {
9595 if ( err ) {
9696 return console . error ( err ) ;
9797 }
9898 } ) ;
9999} ;
100100
101- async function fetchDOM ( screenshots , options ) {
102- console . log ( "fetchDOM started" )
103- const createBrowser = require ( 'browserless' )
104- const browser = createBrowser ( )
105-
106- if ( ! fs . existsSync ( 'doms' ) ) {
107- fs . mkdir ( 'doms' , ( err ) => {
108- if ( err ) {
109- console . error ( err ) ;
110- process . exit ( constants . ERROR_CATCHALL ) ;
111- }
112- } ) ;
113- }
114-
115- //TODO: Make this async
116- for ( const screenshot of screenshots ) {
117- console . log ( screenshot )
118- let id = generateId ( screenshot . name )
119- console . log ( id )
120- screenshot . id = id
121- const browserless = await browser . createContext ( )
122-
123- const html = await browserless . html ( screenshot . url )
124-
125- let dom = new JSDOM ( html , {
126- url : screenshot . url ,
127- resources : 'usable'
128- } ) ;
129- let clone = new JSDOM ( html ) ;
130-
131- // Serialize DOM
132- for ( element of clone . window . document . querySelectorAll ( 'img' ) ) {
133- try {
134- let host = hostname ( screenshot . url ) ;
135- let image = new URL ( element . getAttribute ( 'src' ) , `https://${ host } ` ) . href ;
136- element . setAttribute ( 'src' , image ) ;
137- } catch ( e ) {
138- console . log ( e ) ;
139- }
140- }
141-
142- try {
143- console . log ( "Creating CSS DOM" )
144- await serializeCSSOM ( dom , clone ) ;
145- fs . writeFileSync ( `doms/${ id } .html` , clone . serialize ( ) ) ;
146- } catch ( err ) {
147- console . error ( err ) ;
148- }
149- await browserless . destroyContext ( ) ;
150- //Async upload
151- // upload(id, screenshot, options);
152- }
153- await browser . close ( )
154- }
155-
156101function getBase64 ( url ) {
157102 return axios . get ( url , {
158- responseType : "text" ,
159- responseEncoding : "base64" ,
160- } )
103+ responseType : "text" ,
104+ responseEncoding : "base64" ,
105+ } )
161106 . then ( response => response . data )
162107 . catch ( function ( error ) {
163- console . log ( '[smartui] getBase64 Error: ' , error . message ) ;
108+ console . log ( '[smartui] Error: ' , error . message ) ;
164109 process . exit ( constants . ERROR_CATCHALL ) ;
165110 } ) ;
166111}
@@ -180,57 +125,4 @@ async function serializeCSSOM(dom, clone) {
180125 } ) ;
181126}
182127
183- // Returns the hostname portion of a URL.
184- function hostname ( url ) {
185- return new URL ( url ) . hostname ;
186- }
187-
188- function generateId ( str ) {
189- const lowercaseStr = str . toLowerCase ( ) ;
190- const noSpacesStr = lowercaseStr . replace ( / \s / g, '-' ) ;
191- return noSpacesStr ;
192- }
193-
194- async function upload ( screenshots , options ) {
195- // Create form
196- let commit = await getLastCommit ( ) ;
197- const form = new formData ( ) ;
198- console . log ( "Upload Started with " , screenshots )
199-
200- for ( const screenshot of screenshots ) {
201- const file = fs . readFileSync ( `doms/${ screenshot . id } .html` ) ;
202- form . append ( 'files' , file , `${ screenshot . name } .html` ) ;
203- }
204- form . append ( 'resolution' , constants . ALL ) ;
205- form . append ( 'browser' , constants . ALL ) ;
206- form . append ( 'projectToken' , process . env . PROJECT_TOKEN ) ;
207- form . append ( 'branch' , commit . branch ) ;
208- form . append ( 'commitId' , commit . shortHash ) ;
209- form . append ( 'commitAuthor' , commit . author . name ) ;
210- form . append ( 'commitMessage' , commit . subject ) ;
211- form . append ( 'fullPage' , "true" ) ;
212-
213-
214- githubURL = process . env . GITHUB_URL
215- if ( githubURL ) {
216- form . append ( 'githubURL' , githubURL ) ;
217- }
218-
219- // Send DOM to render API
220- await axios . post ( constants [ options . env ] . RENDER_API_URL , form , {
221- headers : {
222- ...form . getHeaders ( )
223- }
224- } ) . then ( async function ( response ) {
225- console . log ( '[smartui] Build URL: ' , response . data . buildURL ) ;
226- console . log ( '[smartui] Build in progress...' ) ;
227- await shortPolling ( response . data . buildId , 0 , options ) ;
228- } ) . catch ( function ( error ) {
229- if ( error . response ) {
230- console . log ( '[smartui] Build failed: Error: ' , error . response . data . message ) ;
231- } else {
232- console . log ( '[smartui] Build failed: Error: ' , error . message ) ;
233- }
234- } ) ;
235- }
236- module . exports = { sendDoM, fetchDOM, upload } ;
128+ module . exports = { sendDoM } ;
0 commit comments