11// @ts -check
22const { stripIndent } = require ( 'common-tags' )
3+ const R = require ( 'ramda' )
34const debug = require ( 'debug' ) ( 'netlify-plugin-cypress' )
45const debugVerbose = require ( 'debug' ) ( 'netlify-plugin-cypress:verbose' )
56const { ping, getBrowserPath, serveFolder } = require ( './utils' )
@@ -278,21 +279,26 @@ const hasRecordKey = () => typeof process.env.CYPRESS_RECORD_KEY === 'string'
278279
279280module . exports = {
280281 onPreBuild : async ( arg ) => {
282+ // we need to install everything to be ready
281283 await install ( arg )
282284 await cypressVerify ( arg )
283285 await cypressInfo ( arg )
284286
285- debug ( 'cypress plugin preBuild inputs %o' , arg . inputs )
286- const preBuildInputs = arg . inputs && arg . inputs . preBuild
287- if ( ! preBuildInputs ) {
288- debug ( 'there are no preBuild inputs' )
287+ const { inputs, utils } = arg
288+
289+ const preBuildInputs = inputs . preBuild || { }
290+ debug ( 'preBuild inputs %o' , preBuildInputs )
291+
292+ const enablePreBuildTests = Boolean ( preBuildInputs . enable )
293+ if ( ! enablePreBuildTests ) {
294+ debug ( 'Skipping preBuild tests' )
289295 return
290296 }
291297
292- const browser = arg . inputs . browser || DEFAULT_BROWSER
298+ const browser = preBuildInputs . browser || DEFAULT_BROWSER
293299
294- const closeServer = startServerMaybe ( arg . utils . run , preBuildInputs )
295- await waitOnMaybe ( arg . utils . build , preBuildInputs )
300+ const closeServer = startServerMaybe ( utils . run , preBuildInputs )
301+ await waitOnMaybe ( utils . build , preBuildInputs )
296302
297303 const baseUrl = preBuildInputs [ 'wait-on' ]
298304 const record = hasRecordKey ( ) && Boolean ( preBuildInputs . record )
@@ -323,47 +329,49 @@ module.exports = {
323329 closeServer ( )
324330 }
325331
326- const errorCallback = arg . utils . build . failBuild . bind ( arg . utils . build )
327- const summaryCallback = arg . utils . status . show . bind ( arg . utils . status )
332+ const errorCallback = utils . build . failBuild . bind ( utils . build )
333+ const summaryCallback = utils . status . show . bind ( utils . status )
328334
329335 processCypressResults ( results , errorCallback , summaryCallback )
330336 } ,
331337
332- onPostBuild : async ( arg ) => {
333- debugVerbose ( 'postBuild arg %o' , arg )
334- debug ( 'cypress plugin postBuild inputs %o' , arg . inputs )
338+ onPostBuild : async ( { inputs, constants, utils } ) => {
339+ debugVerbose ( '===postBuild===' )
335340
336- const skipTests = Boolean ( arg . inputs . skip )
337- if ( skipTests ) {
338- console . log ( 'Skipping tests because skip=true' )
341+ const postBuildInputs = inputs . postBuild || { }
342+ debug ( 'cypress plugin postBuild inputs %o' , postBuildInputs )
343+
344+ const enablePostBuildTests = Boolean ( postBuildInputs . enable )
345+ if ( ! enablePostBuildTests ) {
346+ debug ( 'Skipping postBuild tests' )
339347 return
340348 }
341349
342- const fullPublishFolder = arg . constants . PUBLISH_DIR
350+ const fullPublishFolder = constants . PUBLISH_DIR
343351 debug ( 'folder to publish is "%s"' , fullPublishFolder )
344352
345- const browser = arg . inputs . browser || DEFAULT_BROWSER
353+ const browser = postBuildInputs . browser || DEFAULT_BROWSER
346354
347355 // only if the user wants to record the tests and has set the record key
348356 // then we should attempt recording
349- const record = hasRecordKey ( ) && Boolean ( arg . inputs . record )
357+ const record = hasRecordKey ( ) && Boolean ( postBuildInputs . record )
350358
351- const spec = arg . inputs . spec
359+ const spec = postBuildInputs . spec
352360 let group
353361 let tag
354362 if ( record ) {
355- group = arg . inputs . group || 'postBuild'
363+ group = postBuildInputs . group || 'postBuild'
356364
357- if ( arg . inputs . tag ) {
358- tag = arg . inputs . tag
365+ if ( postBuildInputs . tag ) {
366+ tag = postBuildInputs . tag
359367 } else {
360368 tag = process . env . CONTEXT
361369 }
362370 }
363- const spa = arg . inputs . spa
371+ const spa = postBuildInputs . spa
364372
365- const errorCallback = arg . utils . build . failBuild . bind ( arg . utils . build )
366- const summaryCallback = arg . utils . status . show . bind ( arg . utils . status )
373+ const errorCallback = utils . build . failBuild . bind ( utils . build )
374+ const summaryCallback = utils . status . show . bind ( utils . status )
367375
368376 await postBuild ( {
369377 fullPublishFolder,
@@ -382,11 +390,12 @@ module.exports = {
382390 * Executes after successful Netlify deployment.
383391 * @param {any } arg
384392 */
385- onSuccess : async ( arg ) => {
386- debugVerbose ( 'onSuccess arg %o' , arg )
393+ onSuccess : async ( { utils , inputs , constants } ) => {
394+ debugVerbose ( 'onSuccess arg %o' , { utils , inputs , constants } )
387395
388- const { utils, inputs, constants } = arg
389- debug ( 'onSuccess inputs %o' , inputs )
396+ // extract test run parameters
397+ const onSuccessInputs = R . omit ( [ 'preBuild' , 'postBuild' ] , inputs || { } )
398+ debug ( 'onSuccess inputs %o' , onSuccessInputs )
390399
391400 const isLocal = constants . IS_LOCAL
392401 const siteName = process . env . SITE_NAME
@@ -397,16 +406,9 @@ module.exports = {
397406 isLocal,
398407 } )
399408
400- // extract test run parameters
401- const onSuccessInputs = inputs . onSuccess
402- if ( ! onSuccessInputs ) {
403- debug ( 'no onSuccess inputs, skipping testing the deployed url' )
404- return
405- }
406-
407- const enableTests = Boolean ( onSuccessInputs . enable )
408- if ( ! enableTests ) {
409- console . log ( 'Skipping tests because enable=false' )
409+ const enableOnSuccessTests = Boolean ( onSuccessInputs . enable )
410+ if ( ! enableOnSuccessTests ) {
411+ debug ( 'Skipping onSuccess tests' )
410412 return
411413 }
412414
@@ -419,7 +421,7 @@ module.exports = {
419421 return errorCallback ( 'Missing DEPLOY_PRIME_URL' )
420422 }
421423
422- const browser = arg . inputs . browser || DEFAULT_BROWSER
424+ const browser = onSuccessInputs . browser || DEFAULT_BROWSER
423425
424426 // only if the user wants to record the tests and has set the record key
425427 // then we should attempt recording
0 commit comments