diff --git a/packages/next/build/index.ts b/packages/next/build/index.ts index f2ec3a9ce06e1..179ab52235386 100644 --- a/packages/next/build/index.ts +++ b/packages/next/build/index.ts @@ -770,9 +770,8 @@ export default async function build(dir: string, conf = null): Promise { const analysisEnd = process.hrtime(analysisBegin) telemetry.record( - eventBuildOptimize({ + eventBuildOptimize(pagePaths, { durationInSeconds: analysisEnd[0], - totalPageCount: pagePaths.length, staticPageCount: staticPages.size, ssrPageCount: pagePaths.length - staticPages.size, }) diff --git a/packages/next/telemetry/events/build.ts b/packages/next/telemetry/events/build.ts index b413f0b3b86a4..f3ba100bb721d 100644 --- a/packages/next/telemetry/events/build.ts +++ b/packages/next/telemetry/events/build.ts @@ -19,13 +19,32 @@ type EventBuildOptimized = { totalPageCount: number staticPageCount: number ssrPageCount: number + hasDunderPages: boolean + hasTestPages: boolean } +const REGEXP_DIRECTORY_DUNDER = /[\\/]__[^\\/]+(? ): { eventName: string; payload: EventBuildOptimized } { return { eventName: EVENT_BUILD_OPTIMIZE, - payload: event, + payload: { + ...event, + totalPageCount: pagePaths.length, + hasDunderPages: pagePaths.some(path => + REGEXP_DIRECTORY_DUNDER.test(path) + ), + hasTestPages: pagePaths.some( + path => REGEXP_DIRECTORY_TESTS.test(path) || REGEXP_FILE_TEST.test(path) + ), + }, } } diff --git a/test/integration/telemetry/pages/__ytho__/lel.js b/test/integration/telemetry/pages/__ytho__/lel.js new file mode 100644 index 0000000000000..3cbd09bcbc5a0 --- /dev/null +++ b/test/integration/telemetry/pages/__ytho__/lel.js @@ -0,0 +1,3 @@ +export default () => { + return 'oops, I happen to look like a React component' +} diff --git a/test/integration/telemetry/pages/hello.test.skip b/test/integration/telemetry/pages/hello.test.skip new file mode 100644 index 0000000000000..9780095a4d7b4 --- /dev/null +++ b/test/integration/telemetry/pages/hello.test.skip @@ -0,0 +1 @@ +export default () => 'Hello Test' diff --git a/test/integration/telemetry/test/index.test.js b/test/integration/telemetry/test/index.test.js index da2fe430ecf4d..ea11bae5efc10 100644 --- a/test/integration/telemetry/test/index.test.js +++ b/test/integration/telemetry/test/index.test.js @@ -92,6 +92,26 @@ describe('Telemetry CLI', () => { expect(stderr2).toMatch(/isSrcDir.*?true/) }) + it('detects tests correctly for `next build`', async () => { + await fs.rename( + path.join(appDir, 'pages', 'hello.test.skip'), + path.join(appDir, 'pages', 'hello.test.js') + ) + const { stderr } = await runNextCommand(['build', appDir], { + stderr: true, + env: { + NEXT_TELEMETRY_DEBUG: 1, + }, + }) + await fs.rename( + path.join(appDir, 'pages', 'hello.test.js'), + path.join(appDir, 'pages', 'hello.test.skip') + ) + + expect(stderr).toMatch(/hasDunderPages.*?true/) + expect(stderr).toMatch(/hasTestPages.*?true/) + }) + it('detects isSrcDir dir correctly for `next dev`', async () => { let port = await findPort() let stderr = ''