From 4246222abe97c488b10309c6f7da69e70d871664 Mon Sep 17 00:00:00 2001 From: Edmund Hung Date: Fri, 31 Jul 2026 16:45:11 +0100 Subject: [PATCH 1/4] test(create-cloudflare): serialize Nuxt framework tests --- .../e2e/tests/frameworks/frameworks.test.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/create-cloudflare/e2e/tests/frameworks/frameworks.test.ts b/packages/create-cloudflare/e2e/tests/frameworks/frameworks.test.ts index b6a4ab88223..bca0b86a999 100644 --- a/packages/create-cloudflare/e2e/tests/frameworks/frameworks.test.ts +++ b/packages/create-cloudflare/e2e/tests/frameworks/frameworks.test.ts @@ -55,7 +55,13 @@ describe // is a variant label that disambiguates tests sharing the same // framework id + platform. getFrameworkConfig ignores it. const variantLabel = testConfig.name.split(":")[2]; - test.runIf(shouldRunTest(testConfig))( + const frameworkTest = test.runIf(shouldRunTest(testConfig)); + // Check whether concurrent pnpm version provisioning causes the Nuxt failures. + const testToRun = + frameworkConfig.id === "nuxt" + ? frameworkTest.sequential + : frameworkTest; + testToRun( `${frameworkConfig.id} (${frameworkConfig.platform ?? "pages"})${ variantLabel ? ` [${variantLabel}]` : "" }`, From 96687ef49a213ae2c8d526257d167e1426842c92 Mon Sep 17 00:00:00 2001 From: Edmund Hung Date: Fri, 31 Jul 2026 17:03:59 +0100 Subject: [PATCH 2/4] test(create-cloudflare): document Nuxt pnpm race --- .../create-cloudflare/e2e/tests/frameworks/frameworks.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/create-cloudflare/e2e/tests/frameworks/frameworks.test.ts b/packages/create-cloudflare/e2e/tests/frameworks/frameworks.test.ts index bca0b86a999..ea7cb4025c9 100644 --- a/packages/create-cloudflare/e2e/tests/frameworks/frameworks.test.ts +++ b/packages/create-cloudflare/e2e/tests/frameworks/frameworks.test.ts @@ -56,7 +56,8 @@ describe // framework id + platform. getFrameworkConfig ignores it. const variantLabel = testConfig.name.split(":")[2]; const frameworkTest = test.runIf(shouldRunTest(testConfig)); - // Check whether concurrent pnpm version provisioning causes the Nuxt failures. + // Nuxt projects may provision their pinned pnpm version during installation. + // Keep the variants sequential so they do not mutate shared pnpm state concurrently. const testToRun = frameworkConfig.id === "nuxt" ? frameworkTest.sequential From 82704c83a16147d5fbe1da031ab7f4544453bc9e Mon Sep 17 00:00:00 2001 From: Edmund Hung Date: Fri, 31 Jul 2026 17:30:55 +0100 Subject: [PATCH 3/4] ci(c3-e2e): disable pnpm self-provisioning --- .github/workflows/c3-e2e.yml | 4 ++++ .../e2e/tests/frameworks/frameworks.test.ts | 9 +-------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/c3-e2e.yml b/.github/workflows/c3-e2e.yml index 9dab2e428fa..24070c22fed 100644 --- a/.github/workflows/c3-e2e.yml +++ b/.github/workflows/c3-e2e.yml @@ -287,6 +287,10 @@ jobs: run: pnpm run test:e2e:c3 env: NODE_VERSION: ${{ env.NODE_VERSION }} + # Some framework generators write a different pnpm version to `packageManager`. + # By default pnpm downloads and runs it. Concurrent tests can then provision + # that version in the same pnpm tool store, causing recursive installs. + pnpm_config_manage_package_manager_versions: "false" E2E_EXPERIMENTAL: ${{ matrix.experimental }} E2E_TEST_PM: ${{ matrix.pm.name }} E2E_TEST_PM_VERSION: ${{ matrix.pm.version }} diff --git a/packages/create-cloudflare/e2e/tests/frameworks/frameworks.test.ts b/packages/create-cloudflare/e2e/tests/frameworks/frameworks.test.ts index ea7cb4025c9..b6a4ab88223 100644 --- a/packages/create-cloudflare/e2e/tests/frameworks/frameworks.test.ts +++ b/packages/create-cloudflare/e2e/tests/frameworks/frameworks.test.ts @@ -55,14 +55,7 @@ describe // is a variant label that disambiguates tests sharing the same // framework id + platform. getFrameworkConfig ignores it. const variantLabel = testConfig.name.split(":")[2]; - const frameworkTest = test.runIf(shouldRunTest(testConfig)); - // Nuxt projects may provision their pinned pnpm version during installation. - // Keep the variants sequential so they do not mutate shared pnpm state concurrently. - const testToRun = - frameworkConfig.id === "nuxt" - ? frameworkTest.sequential - : frameworkTest; - testToRun( + test.runIf(shouldRunTest(testConfig))( `${frameworkConfig.id} (${frameworkConfig.platform ?? "pages"})${ variantLabel ? ` [${variantLabel}]` : "" }`, From f6edef04dd679ea693e253b8517f29bcdbba6f52 Mon Sep 17 00:00:00 2001 From: Edmund Hung Date: Fri, 31 Jul 2026 18:21:09 +0100 Subject: [PATCH 4/4] ci(c3-e2e): include pnpm setting in test cache key --- packages/create-cloudflare/turbo.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/create-cloudflare/turbo.json b/packages/create-cloudflare/turbo.json index 918fd28c772..ae9209806b1 100644 --- a/packages/create-cloudflare/turbo.json +++ b/packages/create-cloudflare/turbo.json @@ -28,7 +28,8 @@ "E2E_FRAMEWORK_TEMPLATE_TO_TEST", "E2E_PROJECT_PATH", "E2E_TEST_RETRIES", - "E2E_RUN_DEPLOY_TESTS" + "E2E_RUN_DEPLOY_TESTS", + "pnpm_config_manage_package_manager_versions" ], "dependsOn": ["build"], "inputs": ["e2e/**", "vitest-e2e.config.ts", "!e2e/README.md"],