From ce2caaecdc4ed6ae521dfedc1a036263573ed1fd Mon Sep 17 00:00:00 2001 From: Luis Alvarez Date: Mon, 3 Feb 2020 15:45:59 -0500 Subject: [PATCH 1/7] Updated event --- packages/next/build/index.ts | 3 +-- packages/next/telemetry/events/build.ts | 21 +++++++++++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/packages/next/build/index.ts b/packages/next/build/index.ts index f2ec3a9ce06e17f..179ab522353869c 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 b413f0b3b86a40b..9a0c549941d1a28 100644 --- a/packages/next/telemetry/events/build.ts +++ b/packages/next/telemetry/events/build.ts @@ -19,13 +19,30 @@ type EventBuildOptimized = { totalPageCount: number staticPageCount: number ssrPageCount: number + hasDunderPages: boolean + hasTestPages: boolean } +const DUNDER_PAGES = /^[\\/]__generated__[\\/]/ +const TEST_PAGES = /^[\\/]__(tests|mocks)__[\\/]/ +const TEST_FILE = /\.(spec|test)\.[jt]sx?$/ + export function eventBuildOptimize( - event: EventBuildOptimized + pagePaths: string[], + event: Omit< + EventBuildOptimized, + 'totalPageCount' | 'hasDunderPages' | 'hasTestPages' + > ): { eventName: string; payload: EventBuildOptimized } { return { eventName: EVENT_BUILD_OPTIMIZE, - payload: event, + payload: { + ...event, + totalPageCount: pagePaths.length, + hasDunderPages: pagePaths.some(path => DUNDER_PAGES.test(path)), + hasTestPages: pagePaths.some( + path => TEST_PAGES.test(path) || TEST_FILE.test(path) + ), + }, } } From 01292d1340c1f0dac475347ba0f617741c729bd1 Mon Sep 17 00:00:00 2001 From: Joe Haddad Date: Tue, 4 Feb 2020 09:26:36 -0500 Subject: [PATCH 2/7] adjust regex --- packages/next/telemetry/events/build.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/next/telemetry/events/build.ts b/packages/next/telemetry/events/build.ts index 9a0c549941d1a28..4e7671ac0fcc369 100644 --- a/packages/next/telemetry/events/build.ts +++ b/packages/next/telemetry/events/build.ts @@ -23,8 +23,9 @@ type EventBuildOptimized = { hasTestPages: boolean } -const DUNDER_PAGES = /^[\\/]__generated__[\\/]/ -const TEST_PAGES = /^[\\/]__(tests|mocks)__[\\/]/ +const REGEXP_DIRECTORY_DUNDER = /[\\/]__[^\\/]+(? DUNDER_PAGES.test(path)), + hasDunderPages: pagePaths.some(path => + REGEXP_DIRECTORY_DUNDER.test(path) + ), hasTestPages: pagePaths.some( - path => TEST_PAGES.test(path) || TEST_FILE.test(path) + path => REGEXP_DIRECTORY_TESTS.test(path) || TEST_FILE.test(path) ), }, } From 8639f96ed6c26107484aadcfeda335ab1c8c30a9 Mon Sep 17 00:00:00 2001 From: Joe Haddad Date: Tue, 4 Feb 2020 09:32:13 -0500 Subject: [PATCH 3/7] adjust regexp more --- packages/next/telemetry/events/build.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/next/telemetry/events/build.ts b/packages/next/telemetry/events/build.ts index 4e7671ac0fcc369..c50959a9c53809b 100644 --- a/packages/next/telemetry/events/build.ts +++ b/packages/next/telemetry/events/build.ts @@ -23,10 +23,10 @@ type EventBuildOptimized = { hasTestPages: boolean } -const REGEXP_DIRECTORY_DUNDER = /[\\/]__[^\\/]+(? Date: Tue, 4 Feb 2020 09:39:07 -0500 Subject: [PATCH 4/7] Better test file regex --- packages/next/telemetry/events/build.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/next/telemetry/events/build.ts b/packages/next/telemetry/events/build.ts index c50959a9c53809b..f3ba100bb721d36 100644 --- a/packages/next/telemetry/events/build.ts +++ b/packages/next/telemetry/events/build.ts @@ -25,8 +25,7 @@ type EventBuildOptimized = { const REGEXP_DIRECTORY_DUNDER = /[\\/]__[^\\/]+(? REGEXP_DIRECTORY_TESTS.test(path) || TEST_FILE.test(path) + path => REGEXP_DIRECTORY_TESTS.test(path) || REGEXP_FILE_TEST.test(path) ), }, } From 4d690d7af85904cafefb7f8dc2fed47cc859168e Mon Sep 17 00:00:00 2001 From: Joe Haddad Date: Tue, 4 Feb 2020 10:18:00 -0500 Subject: [PATCH 5/7] add tests --- test/integration/telemetry/pages/__ytho__/lel.js | 3 +++ test/integration/telemetry/pages/hello.test.js | 1 + test/integration/telemetry/test/index.test.js | 13 +++++++++++++ 3 files changed, 17 insertions(+) create mode 100644 test/integration/telemetry/pages/__ytho__/lel.js create mode 100644 test/integration/telemetry/pages/hello.test.js diff --git a/test/integration/telemetry/pages/__ytho__/lel.js b/test/integration/telemetry/pages/__ytho__/lel.js new file mode 100644 index 000000000000000..3cbd09bcbc5a097 --- /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.js b/test/integration/telemetry/pages/hello.test.js new file mode 100644 index 000000000000000..9780095a4d7b437 --- /dev/null +++ b/test/integration/telemetry/pages/hello.test.js @@ -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 da2fe430ecf4dec..83c288edcf06f27 100644 --- a/test/integration/telemetry/test/index.test.js +++ b/test/integration/telemetry/test/index.test.js @@ -92,6 +92,19 @@ describe('Telemetry CLI', () => { expect(stderr2).toMatch(/isSrcDir.*?true/) }) + fit('detects tests correctly for `next build`', async () => { + const { stderr } = await runNextCommand(['build', appDir], { + stderr: true, + env: { + NEXT_TELEMETRY_DEBUG: 1, + }, + }) + + console.log(stderr) + 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 = '' From 4d58c673b9162be3eab38a58128fb757e2395b16 Mon Sep 17 00:00:00 2001 From: Joe Haddad Date: Tue, 4 Feb 2020 10:19:58 -0500 Subject: [PATCH 6/7] Update index.test.js --- test/integration/telemetry/test/index.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/integration/telemetry/test/index.test.js b/test/integration/telemetry/test/index.test.js index 83c288edcf06f27..001e86f61082b9a 100644 --- a/test/integration/telemetry/test/index.test.js +++ b/test/integration/telemetry/test/index.test.js @@ -92,7 +92,7 @@ describe('Telemetry CLI', () => { expect(stderr2).toMatch(/isSrcDir.*?true/) }) - fit('detects tests correctly for `next build`', async () => { + it('detects tests correctly for `next build`', async () => { const { stderr } = await runNextCommand(['build', appDir], { stderr: true, env: { From 97ba5d0cecfc02fe46a0cdfb4baf315afaca4c0a Mon Sep 17 00:00:00 2001 From: Joe Haddad Date: Tue, 4 Feb 2020 10:32:50 -0500 Subject: [PATCH 7/7] Rename test file --- .../telemetry/pages/{hello.test.js => hello.test.skip} | 0 test/integration/telemetry/test/index.test.js | 9 ++++++++- 2 files changed, 8 insertions(+), 1 deletion(-) rename test/integration/telemetry/pages/{hello.test.js => hello.test.skip} (100%) diff --git a/test/integration/telemetry/pages/hello.test.js b/test/integration/telemetry/pages/hello.test.skip similarity index 100% rename from test/integration/telemetry/pages/hello.test.js rename to test/integration/telemetry/pages/hello.test.skip diff --git a/test/integration/telemetry/test/index.test.js b/test/integration/telemetry/test/index.test.js index 001e86f61082b9a..ea11bae5efc102c 100644 --- a/test/integration/telemetry/test/index.test.js +++ b/test/integration/telemetry/test/index.test.js @@ -93,14 +93,21 @@ describe('Telemetry CLI', () => { }) 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') + ) - console.log(stderr) expect(stderr).toMatch(/hasDunderPages.*?true/) expect(stderr).toMatch(/hasTestPages.*?true/) })