@@ -315,11 +315,11 @@ describe('webpack config', () => {
315315
316316 expect ( finalWebpackConfig . entry ) . toEqual (
317317 expect . objectContaining ( {
318- // original entry point value is a string
318+ // original entrypoint value is a string
319319 // (was 'private-next-pages/api/dogs/[name].js')
320320 'pages/api/dogs/[name]' : [ rewriteFramesHelper , serverConfigFilePath , 'private-next-pages/api/dogs/[name].js' ] ,
321321
322- // original entry point value is a string array
322+ // original entrypoint value is a string array
323323 // (was ['./node_modules/smellOVision/index.js', 'private-next-pages/_app.js'])
324324 'pages/_app' : [
325325 rewriteFramesHelper ,
@@ -328,14 +328,14 @@ describe('webpack config', () => {
328328 'private-next-pages/_app.js' ,
329329 ] ,
330330
331- // original entry point value is an object containing a string `import` value
332- // (`import` was 'private-next-pages/api/simulator/dogStats/[name].js')
331+ // original entrypoint value is an object containing a string `import` value
332+ // (was { import: 'private-next-pages/api/simulator/dogStats/[name].js' } )
333333 'pages/api/simulator/dogStats/[name]' : {
334334 import : [ rewriteFramesHelper , serverConfigFilePath , 'private-next-pages/api/simulator/dogStats/[name].js' ] ,
335335 } ,
336336
337- // original entry point value is an object containing a string array `import` value
338- // (`import` was ['./node_modules/dogPoints/converter.js', 'private-next-pages/api/simulator/leaderboard.js'])
337+ // original entrypoint value is an object containing a string array `import` value
338+ // (was { import: ['./node_modules/dogPoints/converter.js', 'private-next-pages/api/simulator/leaderboard.js'] } )
339339 'pages/api/simulator/leaderboard' : {
340340 import : [
341341 rewriteFramesHelper ,
@@ -345,16 +345,64 @@ describe('webpack config', () => {
345345 ] ,
346346 } ,
347347
348- // original entry point value is an object containg properties besides `import`
349- // (` dependOn` remains untouched )
348+ // original entrypoint value is an object containg properties besides `import`
349+ // (was { import: 'private-next-pages/api/tricks/[trickName].js', dependOn: 'treats', } )
350350 'pages/api/tricks/[trickName]' : {
351351 import : [ rewriteFramesHelper , serverConfigFilePath , 'private-next-pages/api/tricks/[trickName].js' ] ,
352- dependOn : 'treats' ,
352+ dependOn : 'treats' , // untouched
353353 } ,
354354 } ) ,
355355 ) ;
356356 } ) ;
357357
358+ it ( 'injects user config file into `_app` in both server and client bundles' , async ( ) => {
359+ const finalServerWebpackConfig = await materializeFinalWebpackConfig ( {
360+ userNextConfig,
361+ incomingWebpackConfig : serverWebpackConfig ,
362+ incomingWebpackBuildContext : serverBuildContext ,
363+ } ) ;
364+ const finalClientWebpackConfig = await materializeFinalWebpackConfig ( {
365+ userNextConfig,
366+ incomingWebpackConfig : clientWebpackConfig ,
367+ incomingWebpackBuildContext : clientBuildContext ,
368+ } ) ;
369+
370+ expect ( finalServerWebpackConfig . entry ) . toEqual (
371+ expect . objectContaining ( {
372+ 'pages/_app' : expect . arrayContaining ( [ serverConfigFilePath ] ) ,
373+ } ) ,
374+ ) ;
375+ expect ( finalClientWebpackConfig . entry ) . toEqual (
376+ expect . objectContaining ( {
377+ 'pages/_app' : expect . arrayContaining ( [ clientConfigFilePath ] ) ,
378+ } ) ,
379+ ) ;
380+ } ) ;
381+
382+ it ( 'injects user config file into API routes' , async ( ) => {
383+ const finalWebpackConfig = await materializeFinalWebpackConfig ( {
384+ userNextConfig,
385+ incomingWebpackConfig : serverWebpackConfig ,
386+ incomingWebpackBuildContext : serverBuildContext ,
387+ } ) ;
388+
389+ expect ( finalWebpackConfig . entry ) . toEqual (
390+ expect . objectContaining ( {
391+ 'pages/api/simulator/dogStats/[name]' : {
392+ import : expect . arrayContaining ( [ serverConfigFilePath ] ) ,
393+ } ,
394+
395+ 'pages/api/simulator/leaderboard' : {
396+ import : expect . arrayContaining ( [ serverConfigFilePath ] ) ,
397+ } ,
398+
399+ 'pages/api/tricks/[trickName]' : expect . objectContaining ( {
400+ import : expect . arrayContaining ( [ serverConfigFilePath ] ) ,
401+ } ) ,
402+ } ) ,
403+ ) ;
404+ } ) ;
405+
358406 it ( 'does not inject anything into non-_app, non-API routes' , async ( ) => {
359407 const finalWebpackConfig = await materializeFinalWebpackConfig ( {
360408 userNextConfig,
0 commit comments