From f447adb192c7f0e99dd75b228ea3c58140ad38fd Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Sun, 21 Jan 2024 15:09:30 -0800 Subject: [PATCH] chore(crwa): update e2e test to handle yarn install patch (#9862) This PR fixes the CRWA e2e tests after the functionality introduced in https://github.com/redwoodjs/redwood/pull/9861. For now I'm skipping `yarn install` since it's prone to timeouts in CI, and the subsequent step, generating types, is also flakey since `yarn pack` seems to skip the `.yarnrc.yml` which is necessary for configuring a proper install. --- packages/create-redwood-app/package.json | 2 +- .../create-redwood-app/scripts/buildPack.js | 31 +++++++++++++++++++ .../templates/js/web/package.json | 4 +-- .../templates/ts/web/package.json | 4 +-- packages/create-redwood-app/tests/e2e.test.ts | 11 +++++-- .../create-redwood-app/tests/e2e_prompts.sh | 2 +- .../tests/e2e_prompts_git.sh | 2 +- .../create-redwood-app/tests/e2e_prompts_m.sh | 2 +- .../tests/e2e_prompts_node_greater.sh | 2 +- .../tests/e2e_prompts_node_less.sh | 2 +- .../tests/e2e_prompts_overwrite.sh | 2 +- .../tests/e2e_prompts_ts.sh | 2 +- 12 files changed, 51 insertions(+), 15 deletions(-) create mode 100644 packages/create-redwood-app/scripts/buildPack.js diff --git a/packages/create-redwood-app/package.json b/packages/create-redwood-app/package.json index 73cba0ca9ed7..52db9b47ecc9 100644 --- a/packages/create-redwood-app/package.json +++ b/packages/create-redwood-app/package.json @@ -15,7 +15,7 @@ ], "scripts": { "build": "node ./scripts/build.js", - "build:pack": "yarn pack -o create-redwood-app.tgz", + "build:pack": "node ./scripts/buildPack.js", "build:watch": "nodemon --watch src --ignore dist,template --exec \"yarn build\"", "prepublishOnly": "NODE_ENV=production yarn build", "set-up-test-project": "node ./scripts/setUpTestProject.js", diff --git a/packages/create-redwood-app/scripts/buildPack.js b/packages/create-redwood-app/scripts/buildPack.js new file mode 100644 index 000000000000..8ec6bb7d1574 --- /dev/null +++ b/packages/create-redwood-app/scripts/buildPack.js @@ -0,0 +1,31 @@ +/* eslint-env node */ + +import { fileURLToPath } from 'node:url' + +import { cd, path, within, $ } from 'zx' + +const tsTemplatePath = fileURLToPath( + new URL('../templates/ts', import.meta.url) +) +const jsTemplatePath = fileURLToPath( + new URL('../templates/js', import.meta.url) +) + +await within(async () => { + cd(tsTemplatePath) + + await $`touch yarn.lock` + await $`yarn` +}) + +await within(async () => { + cd(jsTemplatePath) + + await $`touch yarn.lock` + await $`yarn` +}) + +await $`yarn pack -o create-redwood-app.tgz` + +await $`rm ${path.join(tsTemplatePath, 'yarn.lock')}` +await $`rm ${path.join(jsTemplatePath, 'yarn.lock')}` diff --git a/packages/create-redwood-app/templates/js/web/package.json b/packages/create-redwood-app/templates/js/web/package.json index 490b3c48db21..0b1722e8ff2b 100644 --- a/packages/create-redwood-app/templates/js/web/package.json +++ b/packages/create-redwood-app/templates/js/web/package.json @@ -18,8 +18,8 @@ "react-dom": "0.0.0-experimental-e5205658f-20230913" }, "devDependencies": { + "@redwoodjs/vite": "6.0.7", "@types/react": "18.2.37", - "@types/react-dom": "18.2.15", - "@redwoodjs/vite": "6.0.7" + "@types/react-dom": "18.2.15" } } diff --git a/packages/create-redwood-app/templates/ts/web/package.json b/packages/create-redwood-app/templates/ts/web/package.json index 490b3c48db21..0b1722e8ff2b 100644 --- a/packages/create-redwood-app/templates/ts/web/package.json +++ b/packages/create-redwood-app/templates/ts/web/package.json @@ -18,8 +18,8 @@ "react-dom": "0.0.0-experimental-e5205658f-20230913" }, "devDependencies": { + "@redwoodjs/vite": "6.0.7", "@types/react": "18.2.37", - "@types/react-dom": "18.2.15", - "@redwoodjs/vite": "6.0.7" + "@types/react-dom": "18.2.15" } } diff --git a/packages/create-redwood-app/tests/e2e.test.ts b/packages/create-redwood-app/tests/e2e.test.ts index d81e411c58d7..86dd9724fa48 100644 --- a/packages/create-redwood-app/tests/e2e.test.ts +++ b/packages/create-redwood-app/tests/e2e.test.ts @@ -54,7 +54,11 @@ describe('create-redwood-app', () => { }) test('--yes, -y', async () => { - const p = await $`yarn create-redwood-app ./redwood-app --yes` + // Running `yarn install` in Jest test times out and the subsequent step, + // generating types, is also flakey since `yarn pack` seems to skip `.yarnrc.yml` + // which is necessary for configuring a proper install. + const p = + await $`yarn create-redwood-app ./redwood-app --no-yarn-install --yes` expect(p.exitCode).toEqual(0) expect(p.stdout).toMatchInlineSnapshot(` @@ -66,10 +70,11 @@ describe('create-redwood-app', () => { [?25h✔ Creating your Redwood app in ./redwood-app based on command line argument ✔ Using TypeScript based on command line flag ✔ Will initialize a git repo based on command line flag - ✔ Will run yarn install based on command line flag + ✔ Will not run yarn install based on command line flag [?25l⠋ Creating project files [?25h[?25l✔ Project files created - [?25h[?25l⠋ Initializing a git repo + [?25hℹ Skipped yarn install step + [?25l⠋ Initializing a git repo [?25h[?25l✔ Initialized a git repo with commit message "Initial commit" [?25h Thanks for trying out Redwood! diff --git a/packages/create-redwood-app/tests/e2e_prompts.sh b/packages/create-redwood-app/tests/e2e_prompts.sh index c017c7b184fc..b01b1ece1b1a 100755 --- a/packages/create-redwood-app/tests/e2e_prompts.sh +++ b/packages/create-redwood-app/tests/e2e_prompts.sh @@ -11,7 +11,7 @@ cd $projectPath set projectDirectory "redwood-app-prompt-test" -spawn yarn create-redwood-app +spawn yarn create-redwood-app --no-yarn-install expect "Where would you like to create your Redwood app?" send "$projectDirectory\n" diff --git a/packages/create-redwood-app/tests/e2e_prompts_git.sh b/packages/create-redwood-app/tests/e2e_prompts_git.sh index 655896cc138c..39edd2cee3e2 100755 --- a/packages/create-redwood-app/tests/e2e_prompts_git.sh +++ b/packages/create-redwood-app/tests/e2e_prompts_git.sh @@ -11,7 +11,7 @@ cd $projectPath set projectDirectory "redwood-app-prompt-git-test" -spawn yarn create-redwood-app --git +spawn yarn create-redwood-app --no-yarn-install --git expect "Where would you like to create your Redwood app?" send "$projectDirectory\n" diff --git a/packages/create-redwood-app/tests/e2e_prompts_m.sh b/packages/create-redwood-app/tests/e2e_prompts_m.sh index 30d5e61e6ce3..f9abebafd092 100755 --- a/packages/create-redwood-app/tests/e2e_prompts_m.sh +++ b/packages/create-redwood-app/tests/e2e_prompts_m.sh @@ -11,7 +11,7 @@ cd $projectPath set projectDirectory "redwood-app-prompt-m-test" -spawn yarn create-redwood-app -m "first" +spawn yarn create-redwood-app --no-yarn-install -m "first" expect "Where would you like to create your Redwood app?" send "$projectDirectory\n" diff --git a/packages/create-redwood-app/tests/e2e_prompts_node_greater.sh b/packages/create-redwood-app/tests/e2e_prompts_node_greater.sh index 73a737735458..298f184624cf 100755 --- a/packages/create-redwood-app/tests/e2e_prompts_node_greater.sh +++ b/packages/create-redwood-app/tests/e2e_prompts_node_greater.sh @@ -13,7 +13,7 @@ cd $projectPath set projectDirectory "redwood-app-prompt-node-greater-test" -spawn yarn create-redwood-app +spawn yarn create-redwood-app --no-yarn-install expect "How would you like to proceed?" # ❯ Override error and continue install diff --git a/packages/create-redwood-app/tests/e2e_prompts_node_less.sh b/packages/create-redwood-app/tests/e2e_prompts_node_less.sh index d8187de802fe..2c591a6aefdc 100755 --- a/packages/create-redwood-app/tests/e2e_prompts_node_less.sh +++ b/packages/create-redwood-app/tests/e2e_prompts_node_less.sh @@ -13,7 +13,7 @@ cd $projectPath set projectDirectory "redwood-app-prompt-node-less-test" -spawn yarn create-redwood-app +spawn yarn create-redwood-app --no-yarn-install expect eof catch wait result diff --git a/packages/create-redwood-app/tests/e2e_prompts_overwrite.sh b/packages/create-redwood-app/tests/e2e_prompts_overwrite.sh index dd828aa1a7bf..6dec6771e3db 100755 --- a/packages/create-redwood-app/tests/e2e_prompts_overwrite.sh +++ b/packages/create-redwood-app/tests/e2e_prompts_overwrite.sh @@ -14,7 +14,7 @@ set projectDirectory "redwood-app-prompt-overwrite-test" exec mkdir $projectDirectory exec touch $projectDirectory/README.md -spawn yarn create-redwood-app +spawn yarn create-redwood-app --no-yarn-install expect "Where would you like to create your Redwood app?" send "$projectDirectory\n" diff --git a/packages/create-redwood-app/tests/e2e_prompts_ts.sh b/packages/create-redwood-app/tests/e2e_prompts_ts.sh index 7a32631c8c8a..884bc777b346 100755 --- a/packages/create-redwood-app/tests/e2e_prompts_ts.sh +++ b/packages/create-redwood-app/tests/e2e_prompts_ts.sh @@ -11,7 +11,7 @@ cd $projectPath set projectDirectory "redwood-app-prompt-ts-test" -spawn yarn create-redwood-app --ts +spawn yarn create-redwood-app --no-yarn-install --ts expect "Where would you like to create your Redwood app?" send "$projectDirectory\n"