From 2a35dd111c46caa2fc39550db67f6b1f3aff31d9 Mon Sep 17 00:00:00 2001 From: Bert B Date: Mon, 25 Jul 2022 14:05:03 -0400 Subject: [PATCH 01/21] add vitest option to svelte-create --- packages/create-svelte/bin.js | 13 ++++++++ .../+vitest+default/src/lib/Counter.test.ts | 31 +++++++++++++++++++ .../playwright.config.ts | 11 +++++++ .../playwright.config.js | 10 ++++++ .../+vitest+skeleton/src/routes/index.test.ts | 16 ++++++++++ .../shared/+vitest+typescript/package.json | 5 +++ .../shared/+vitest+typescript/tsconfig.json | 14 +++++++++ .../+vitest+typescript/vitest.config.ts | 12 +++++++ .../+vitest-typescript/vitest.config.js | 12 +++++++ .../create-svelte/shared/+vitest/package.json | 12 +++++++ packages/create-svelte/types/internal.d.ts | 2 ++ 11 files changed, 138 insertions(+) create mode 100644 packages/create-svelte/shared/+vitest+default/src/lib/Counter.test.ts create mode 100644 packages/create-svelte/shared/+vitest+playwright+typescript/playwright.config.ts create mode 100644 packages/create-svelte/shared/+vitest+playwright-typescript/playwright.config.js create mode 100644 packages/create-svelte/shared/+vitest+skeleton/src/routes/index.test.ts create mode 100644 packages/create-svelte/shared/+vitest+typescript/package.json create mode 100644 packages/create-svelte/shared/+vitest+typescript/tsconfig.json create mode 100644 packages/create-svelte/shared/+vitest+typescript/vitest.config.ts create mode 100644 packages/create-svelte/shared/+vitest-typescript/vitest.config.js create mode 100644 packages/create-svelte/shared/+vitest/package.json diff --git a/packages/create-svelte/bin.js b/packages/create-svelte/bin.js index 96bdfb5e1d51..df808a2fb627 100755 --- a/packages/create-svelte/bin.js +++ b/packages/create-svelte/bin.js @@ -110,6 +110,14 @@ async function main() { initial: false, active: 'Yes', inactive: 'No' + }, + { + type: 'toggle', + name: 'vitest', + message: 'Add Vitest for unit testing?', + initial: false, + active: 'Yes', + inactive: 'No' } ], { @@ -150,6 +158,11 @@ async function main() { console.log(cyan(' https://playwright.dev')); } + if (options.vitest) { + console.log(bold('✔ Vitest')); + console.log(cyan(' https://vitest.dev')); + } + console.log('\nInstall community-maintained integrations:'); console.log(cyan(' https://github.com/svelte-add/svelte-adders')); diff --git a/packages/create-svelte/shared/+vitest+default/src/lib/Counter.test.ts b/packages/create-svelte/shared/+vitest+default/src/lib/Counter.test.ts new file mode 100644 index 000000000000..a293680afd87 --- /dev/null +++ b/packages/create-svelte/shared/+vitest+default/src/lib/Counter.test.ts @@ -0,0 +1,31 @@ +import { render, screen, fireEvent } from '@testing-library/svelte'; +import '@testing-library/jest-dom'; +import Counter from './Counter.svelte'; + +describe('Counter.svelte', () => { + it('Expect to render counter with accessible buttons', () => { + render(Counter); + const decreaseButton = screen.getByLabelText('Decrease the counter by one'); + const increaseButton = screen.getByLabelText('Increase the counter by one'); + + expect(decreaseButton).toBeInTheDocument(); + expect(increaseButton).toBeInTheDocument(); + }); + + it('Expect counter to increase and decrease value', async () => { + render(Counter); + + const decreaseButton = screen.getByLabelText('Decrease the counter by one'); + const increaseButton = screen.getByLabelText('Increase the counter by one'); + + expect(screen.queryByText('0')).not.toBeNull(); + + await fireEvent.click(increaseButton); + + expect(screen.queryByText('1')).not.toBeNull(); + + await fireEvent.click(decreaseButton); + + expect(screen.queryByText('0')).not.toBeNull(); + }); +}); diff --git a/packages/create-svelte/shared/+vitest+playwright+typescript/playwright.config.ts b/packages/create-svelte/shared/+vitest+playwright+typescript/playwright.config.ts new file mode 100644 index 000000000000..be3825a3df75 --- /dev/null +++ b/packages/create-svelte/shared/+vitest+playwright+typescript/playwright.config.ts @@ -0,0 +1,11 @@ +import type { PlaywrightTestConfig } from '@playwright/test'; + +const config: PlaywrightTestConfig = { + webServer: { + command: 'npm run build && npm run preview', + port: 4173 + }, + testMatch: 'tests/**/*.{js,ts}' +}; + +export default config; diff --git a/packages/create-svelte/shared/+vitest+playwright-typescript/playwright.config.js b/packages/create-svelte/shared/+vitest+playwright-typescript/playwright.config.js new file mode 100644 index 000000000000..f78c3c285fcc --- /dev/null +++ b/packages/create-svelte/shared/+vitest+playwright-typescript/playwright.config.js @@ -0,0 +1,10 @@ +/** @type {import('@playwright/test').PlaywrightTestConfig} */ +const config = { + webServer: { + command: 'npm run build && npm run preview', + port: 4173 + }, + testMatch: 'tests/**/*.js' +}; + +export default config; diff --git a/packages/create-svelte/shared/+vitest+skeleton/src/routes/index.test.ts b/packages/create-svelte/shared/+vitest+skeleton/src/routes/index.test.ts new file mode 100644 index 000000000000..3f70c9be70af --- /dev/null +++ b/packages/create-svelte/shared/+vitest+skeleton/src/routes/index.test.ts @@ -0,0 +1,16 @@ +import { render, screen } from '@testing-library/svelte'; +import '@testing-library/jest-dom'; +import Index from './index.svelte'; + +describe('Test index.svelte', () => { + it('h1 exists', () => { + const { getByText } = render(Index); + expect(getByText('Welcome to SvelteKit')).toBeInTheDocument(); + }); + it('link to svelte website', () => { + render(Index); + + const link = screen.getByRole('link'); + expect(link).toHaveAttribute('href', 'https://kit.svelte.dev'); + }); +}); diff --git a/packages/create-svelte/shared/+vitest+typescript/package.json b/packages/create-svelte/shared/+vitest+typescript/package.json new file mode 100644 index 000000000000..7e5b866b3516 --- /dev/null +++ b/packages/create-svelte/shared/+vitest+typescript/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "@types/testing-library__jest-dom": "^5.14.5" + } +} diff --git a/packages/create-svelte/shared/+vitest+typescript/tsconfig.json b/packages/create-svelte/shared/+vitest+typescript/tsconfig.json new file mode 100644 index 000000000000..779f3453de73 --- /dev/null +++ b/packages/create-svelte/shared/+vitest+typescript/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "types": ["vitest/globals", "@testing-library/jest-dom"], + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true + } +} diff --git a/packages/create-svelte/shared/+vitest+typescript/vitest.config.ts b/packages/create-svelte/shared/+vitest+typescript/vitest.config.ts new file mode 100644 index 000000000000..057c57c0ea65 --- /dev/null +++ b/packages/create-svelte/shared/+vitest+typescript/vitest.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from 'vite'; +import viteConfig from './vite.config'; + +export default defineConfig({ + ...viteConfig, + plugins: viteConfig?.plugins ?? [], + test: { + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + globals: true, + environment: 'jsdom' + } +}); diff --git a/packages/create-svelte/shared/+vitest-typescript/vitest.config.js b/packages/create-svelte/shared/+vitest-typescript/vitest.config.js new file mode 100644 index 000000000000..057c57c0ea65 --- /dev/null +++ b/packages/create-svelte/shared/+vitest-typescript/vitest.config.js @@ -0,0 +1,12 @@ +import { defineConfig } from 'vite'; +import viteConfig from './vite.config'; + +export default defineConfig({ + ...viteConfig, + plugins: viteConfig?.plugins ?? [], + test: { + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + globals: true, + environment: 'jsdom' + } +}); diff --git a/packages/create-svelte/shared/+vitest/package.json b/packages/create-svelte/shared/+vitest/package.json new file mode 100644 index 000000000000..d4cf58b78e61 --- /dev/null +++ b/packages/create-svelte/shared/+vitest/package.json @@ -0,0 +1,12 @@ +{ + "devDependencies": { + "@testing-library/jest-dom": "^5.16.4", + "@testing-library/svelte": "^3.1.3", + "vitest": "^0.19.1", + "jsdom": "^20.0.0" + }, + "scripts": { + "test:unit": "vitest", + "coverage": "vitest run --coverage" + } +} diff --git a/packages/create-svelte/types/internal.d.ts b/packages/create-svelte/types/internal.d.ts index e0a6ede97b72..442ab128f81d 100644 --- a/packages/create-svelte/types/internal.d.ts +++ b/packages/create-svelte/types/internal.d.ts @@ -5,6 +5,7 @@ export type Options = { prettier: boolean; eslint: boolean; playwright: boolean; + vitest: boolean; }; export type File = { @@ -18,6 +19,7 @@ export type Condition = | 'typescript' | 'checkjs' | 'playwright' + | 'vitest' | 'skeleton' | 'default'; From 09d4ef3dd9c7086caf0011bd3c79a512f382032b Mon Sep 17 00:00:00 2001 From: Bert B Date: Mon, 25 Jul 2022 14:09:44 -0400 Subject: [PATCH 02/21] added changeset --- .changeset/dirty-teachers-hug.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/dirty-teachers-hug.md diff --git a/.changeset/dirty-teachers-hug.md b/.changeset/dirty-teachers-hug.md new file mode 100644 index 000000000000..97aacb1d7fd9 --- /dev/null +++ b/.changeset/dirty-teachers-hug.md @@ -0,0 +1,5 @@ +--- +'create-svelte': patch +--- + +Added the option to add Vitest to new projects From 5fa5ec039b43ef2fdb405e68b8f423c2ce27a620 Mon Sep 17 00:00:00 2001 From: Bert B Date: Mon, 25 Jul 2022 14:20:12 -0400 Subject: [PATCH 03/21] add c8 package for coverage --- packages/create-svelte/shared/+vitest/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/create-svelte/shared/+vitest/package.json b/packages/create-svelte/shared/+vitest/package.json index d4cf58b78e61..7a9e39fee84d 100644 --- a/packages/create-svelte/shared/+vitest/package.json +++ b/packages/create-svelte/shared/+vitest/package.json @@ -3,7 +3,8 @@ "@testing-library/jest-dom": "^5.16.4", "@testing-library/svelte": "^3.1.3", "vitest": "^0.19.1", - "jsdom": "^20.0.0" + "jsdom": "^20.0.0", + "c8": "^7.12.0" }, "scripts": { "test:unit": "vitest", From e4e9ccf8b76cc40e77a50d23be90210dc199e815 Mon Sep 17 00:00:00 2001 From: Bert B Date: Mon, 25 Jul 2022 14:26:38 -0400 Subject: [PATCH 04/21] ran format --- packages/create-svelte/shared/+vitest/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-svelte/shared/+vitest/package.json b/packages/create-svelte/shared/+vitest/package.json index 7a9e39fee84d..682208f4abd4 100644 --- a/packages/create-svelte/shared/+vitest/package.json +++ b/packages/create-svelte/shared/+vitest/package.json @@ -4,7 +4,7 @@ "@testing-library/svelte": "^3.1.3", "vitest": "^0.19.1", "jsdom": "^20.0.0", - "c8": "^7.12.0" + "c8": "^7.12.0" }, "scripts": { "test:unit": "vitest", From 1bf7c59d355a5e7642282ff9d407206018fa3dd1 Mon Sep 17 00:00:00 2001 From: Bert B Date: Mon, 25 Jul 2022 14:34:31 -0400 Subject: [PATCH 05/21] add vitest option to fix typescript error --- .../create-svelte/scripts/update-template-repo-contents.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/create-svelte/scripts/update-template-repo-contents.js b/packages/create-svelte/scripts/update-template-repo-contents.js index 6cd67e1c0b86..5c28a7c1ee79 100644 --- a/packages/create-svelte/scripts/update-template-repo-contents.js +++ b/packages/create-svelte/scripts/update-template-repo-contents.js @@ -19,5 +19,6 @@ await create(repo, { eslint: false, types: 'checkjs', prettier: true, - playwright: false + playwright: false, + vitest: false }); From fdd3fcd8bb46aba5f338bd028616425fcdc0c82e Mon Sep 17 00:00:00 2001 From: Bert B Date: Mon, 25 Jul 2022 15:24:52 -0400 Subject: [PATCH 06/21] Remove svelte-testing-library --- .../shared/+vitest+checkjs/jsconfig.json | 14 +++++++++ .../+vitest+default/src/lib/Counter.test.ts | 31 ------------------- .../+vitest+skeleton/src/routes/index.test.ts | 16 ---------- .../shared/+vitest+typescript/package.json | 5 --- .../+vitest+typescript/src/lib/sum.test.ts | 7 +++++ .../shared/+vitest+typescript/src/lib/sum.ts | 3 ++ .../shared/+vitest+typescript/tsconfig.json | 2 +- .../+vitest+typescript/vitest.config.ts | 3 +- .../shared/+vitest-typescript/src/lib/sum.js | 3 ++ .../+vitest-typescript/src/lib/sum.test.js | 7 +++++ .../+vitest-typescript/vitest.config.js | 3 +- .../create-svelte/shared/+vitest/package.json | 3 -- 12 files changed, 37 insertions(+), 60 deletions(-) create mode 100644 packages/create-svelte/shared/+vitest+checkjs/jsconfig.json delete mode 100644 packages/create-svelte/shared/+vitest+default/src/lib/Counter.test.ts delete mode 100644 packages/create-svelte/shared/+vitest+skeleton/src/routes/index.test.ts delete mode 100644 packages/create-svelte/shared/+vitest+typescript/package.json create mode 100644 packages/create-svelte/shared/+vitest+typescript/src/lib/sum.test.ts create mode 100644 packages/create-svelte/shared/+vitest+typescript/src/lib/sum.ts create mode 100644 packages/create-svelte/shared/+vitest-typescript/src/lib/sum.js create mode 100644 packages/create-svelte/shared/+vitest-typescript/src/lib/sum.test.js diff --git a/packages/create-svelte/shared/+vitest+checkjs/jsconfig.json b/packages/create-svelte/shared/+vitest+checkjs/jsconfig.json new file mode 100644 index 000000000000..eeb6cfdca156 --- /dev/null +++ b/packages/create-svelte/shared/+vitest+checkjs/jsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "types": ["vitest/globals"], + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true + } +} diff --git a/packages/create-svelte/shared/+vitest+default/src/lib/Counter.test.ts b/packages/create-svelte/shared/+vitest+default/src/lib/Counter.test.ts deleted file mode 100644 index a293680afd87..000000000000 --- a/packages/create-svelte/shared/+vitest+default/src/lib/Counter.test.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { render, screen, fireEvent } from '@testing-library/svelte'; -import '@testing-library/jest-dom'; -import Counter from './Counter.svelte'; - -describe('Counter.svelte', () => { - it('Expect to render counter with accessible buttons', () => { - render(Counter); - const decreaseButton = screen.getByLabelText('Decrease the counter by one'); - const increaseButton = screen.getByLabelText('Increase the counter by one'); - - expect(decreaseButton).toBeInTheDocument(); - expect(increaseButton).toBeInTheDocument(); - }); - - it('Expect counter to increase and decrease value', async () => { - render(Counter); - - const decreaseButton = screen.getByLabelText('Decrease the counter by one'); - const increaseButton = screen.getByLabelText('Increase the counter by one'); - - expect(screen.queryByText('0')).not.toBeNull(); - - await fireEvent.click(increaseButton); - - expect(screen.queryByText('1')).not.toBeNull(); - - await fireEvent.click(decreaseButton); - - expect(screen.queryByText('0')).not.toBeNull(); - }); -}); diff --git a/packages/create-svelte/shared/+vitest+skeleton/src/routes/index.test.ts b/packages/create-svelte/shared/+vitest+skeleton/src/routes/index.test.ts deleted file mode 100644 index 3f70c9be70af..000000000000 --- a/packages/create-svelte/shared/+vitest+skeleton/src/routes/index.test.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { render, screen } from '@testing-library/svelte'; -import '@testing-library/jest-dom'; -import Index from './index.svelte'; - -describe('Test index.svelte', () => { - it('h1 exists', () => { - const { getByText } = render(Index); - expect(getByText('Welcome to SvelteKit')).toBeInTheDocument(); - }); - it('link to svelte website', () => { - render(Index); - - const link = screen.getByRole('link'); - expect(link).toHaveAttribute('href', 'https://kit.svelte.dev'); - }); -}); diff --git a/packages/create-svelte/shared/+vitest+typescript/package.json b/packages/create-svelte/shared/+vitest+typescript/package.json deleted file mode 100644 index 7e5b866b3516..000000000000 --- a/packages/create-svelte/shared/+vitest+typescript/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "devDependencies": { - "@types/testing-library__jest-dom": "^5.14.5" - } -} diff --git a/packages/create-svelte/shared/+vitest+typescript/src/lib/sum.test.ts b/packages/create-svelte/shared/+vitest+typescript/src/lib/sum.test.ts new file mode 100644 index 000000000000..75d59931ba79 --- /dev/null +++ b/packages/create-svelte/shared/+vitest+typescript/src/lib/sum.test.ts @@ -0,0 +1,7 @@ +import { sum } from './sum'; + +describe('sum test', () => { + it('adds 1 + 2 to equal 3', () => { + expect(sum(1, 2)).toBe(3); + }); +}); diff --git a/packages/create-svelte/shared/+vitest+typescript/src/lib/sum.ts b/packages/create-svelte/shared/+vitest+typescript/src/lib/sum.ts new file mode 100644 index 000000000000..7b0ce958b03d --- /dev/null +++ b/packages/create-svelte/shared/+vitest+typescript/src/lib/sum.ts @@ -0,0 +1,3 @@ +export function sum(a: number, b: number): number { + return a + b; +} diff --git a/packages/create-svelte/shared/+vitest+typescript/tsconfig.json b/packages/create-svelte/shared/+vitest+typescript/tsconfig.json index 779f3453de73..eeb6cfdca156 100644 --- a/packages/create-svelte/shared/+vitest+typescript/tsconfig.json +++ b/packages/create-svelte/shared/+vitest+typescript/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "./.svelte-kit/tsconfig.json", "compilerOptions": { - "types": ["vitest/globals", "@testing-library/jest-dom"], + "types": ["vitest/globals"], "allowJs": true, "checkJs": true, "esModuleInterop": true, diff --git a/packages/create-svelte/shared/+vitest+typescript/vitest.config.ts b/packages/create-svelte/shared/+vitest+typescript/vitest.config.ts index 057c57c0ea65..53be5bcdfdb0 100644 --- a/packages/create-svelte/shared/+vitest+typescript/vitest.config.ts +++ b/packages/create-svelte/shared/+vitest+typescript/vitest.config.ts @@ -6,7 +6,6 @@ export default defineConfig({ plugins: viteConfig?.plugins ?? [], test: { include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], - globals: true, - environment: 'jsdom' + globals: true } }); diff --git a/packages/create-svelte/shared/+vitest-typescript/src/lib/sum.js b/packages/create-svelte/shared/+vitest-typescript/src/lib/sum.js new file mode 100644 index 000000000000..c17afd446dad --- /dev/null +++ b/packages/create-svelte/shared/+vitest-typescript/src/lib/sum.js @@ -0,0 +1,3 @@ +export function sum(a, b) { + return a + b; +} diff --git a/packages/create-svelte/shared/+vitest-typescript/src/lib/sum.test.js b/packages/create-svelte/shared/+vitest-typescript/src/lib/sum.test.js new file mode 100644 index 000000000000..75d59931ba79 --- /dev/null +++ b/packages/create-svelte/shared/+vitest-typescript/src/lib/sum.test.js @@ -0,0 +1,7 @@ +import { sum } from './sum'; + +describe('sum test', () => { + it('adds 1 + 2 to equal 3', () => { + expect(sum(1, 2)).toBe(3); + }); +}); diff --git a/packages/create-svelte/shared/+vitest-typescript/vitest.config.js b/packages/create-svelte/shared/+vitest-typescript/vitest.config.js index 057c57c0ea65..53be5bcdfdb0 100644 --- a/packages/create-svelte/shared/+vitest-typescript/vitest.config.js +++ b/packages/create-svelte/shared/+vitest-typescript/vitest.config.js @@ -6,7 +6,6 @@ export default defineConfig({ plugins: viteConfig?.plugins ?? [], test: { include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], - globals: true, - environment: 'jsdom' + globals: true } }); diff --git a/packages/create-svelte/shared/+vitest/package.json b/packages/create-svelte/shared/+vitest/package.json index 682208f4abd4..2005cf7d2ba8 100644 --- a/packages/create-svelte/shared/+vitest/package.json +++ b/packages/create-svelte/shared/+vitest/package.json @@ -1,9 +1,6 @@ { "devDependencies": { - "@testing-library/jest-dom": "^5.16.4", - "@testing-library/svelte": "^3.1.3", "vitest": "^0.19.1", - "jsdom": "^20.0.0", "c8": "^7.12.0" }, "scripts": { From e75378f64d80b401873e78c888d8377c4443ee06 Mon Sep 17 00:00:00 2001 From: Bert B Date: Mon, 25 Jul 2022 16:54:28 -0400 Subject: [PATCH 07/21] update to just modify the vite.config.js --- .../shared/+vitest+typescript/vitest.config.ts | 11 ----------- .../shared/+vitest-typescript/vitest.config.js | 11 ----------- packages/create-svelte/shared/+vitest/vite.config.js | 12 ++++++++++++ 3 files changed, 12 insertions(+), 22 deletions(-) delete mode 100644 packages/create-svelte/shared/+vitest+typescript/vitest.config.ts delete mode 100644 packages/create-svelte/shared/+vitest-typescript/vitest.config.js create mode 100644 packages/create-svelte/shared/+vitest/vite.config.js diff --git a/packages/create-svelte/shared/+vitest+typescript/vitest.config.ts b/packages/create-svelte/shared/+vitest+typescript/vitest.config.ts deleted file mode 100644 index 53be5bcdfdb0..000000000000 --- a/packages/create-svelte/shared/+vitest+typescript/vitest.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { defineConfig } from 'vite'; -import viteConfig from './vite.config'; - -export default defineConfig({ - ...viteConfig, - plugins: viteConfig?.plugins ?? [], - test: { - include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], - globals: true - } -}); diff --git a/packages/create-svelte/shared/+vitest-typescript/vitest.config.js b/packages/create-svelte/shared/+vitest-typescript/vitest.config.js deleted file mode 100644 index 53be5bcdfdb0..000000000000 --- a/packages/create-svelte/shared/+vitest-typescript/vitest.config.js +++ /dev/null @@ -1,11 +0,0 @@ -import { defineConfig } from 'vite'; -import viteConfig from './vite.config'; - -export default defineConfig({ - ...viteConfig, - plugins: viteConfig?.plugins ?? [], - test: { - include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], - globals: true - } -}); diff --git a/packages/create-svelte/shared/+vitest/vite.config.js b/packages/create-svelte/shared/+vitest/vite.config.js new file mode 100644 index 000000000000..f45166a45e7e --- /dev/null +++ b/packages/create-svelte/shared/+vitest/vite.config.js @@ -0,0 +1,12 @@ +import { sveltekit } from '@sveltejs/kit/vite'; + +/** @type {import('vite').UserConfig} */ +const config = { + plugins: [sveltekit()], + test: { + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + globals: true + } +}; + +export default config; From a168514c18b9b9965b58150c6a6983de0e65fbb0 Mon Sep 17 00:00:00 2001 From: Bert B Date: Mon, 25 Jul 2022 17:18:02 -0400 Subject: [PATCH 08/21] readd default vite-config for non vitest projects --- packages/create-svelte/shared/-vitest/vite.config.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 packages/create-svelte/shared/-vitest/vite.config.js diff --git a/packages/create-svelte/shared/-vitest/vite.config.js b/packages/create-svelte/shared/-vitest/vite.config.js new file mode 100644 index 000000000000..8747050534d8 --- /dev/null +++ b/packages/create-svelte/shared/-vitest/vite.config.js @@ -0,0 +1,8 @@ +import { sveltekit } from '@sveltejs/kit/vite'; + +/** @type {import('vite').UserConfig} */ +const config = { + plugins: [sveltekit()] +}; + +export default config; From e9e38a61ca2e8fb9e3c3b103ae3aeac1e30d4e5c Mon Sep 17 00:00:00 2001 From: Bert B Date: Tue, 26 Jul 2022 09:42:03 -0400 Subject: [PATCH 09/21] remove coverage testing --- packages/create-svelte/shared/+vitest/package.json | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/create-svelte/shared/+vitest/package.json b/packages/create-svelte/shared/+vitest/package.json index 2005cf7d2ba8..74ba6f84d917 100644 --- a/packages/create-svelte/shared/+vitest/package.json +++ b/packages/create-svelte/shared/+vitest/package.json @@ -1,10 +1,8 @@ { "devDependencies": { - "vitest": "^0.19.1", - "c8": "^7.12.0" + "vitest": "^0.19.1" }, "scripts": { - "test:unit": "vitest", - "coverage": "vitest run --coverage" + "test:unit": "vitest" } } From 8c451fe4cd914cdca5332912ac00501432d0883b Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 16 Aug 2022 21:38:01 -0400 Subject: [PATCH 10/21] create typescript/checkjs/no-typechecking variants of .ts files in shared --- .../create-svelte/scripts/build-templates.js | 37 ++++++++++++++----- .../shared/+vitest-typescript/src/lib/sum.js | 3 -- .../+vitest-typescript/src/lib/sum.test.js | 7 ---- .../src/lib/sum.test.ts | 0 .../src/lib/sum.ts | 5 +++ 5 files changed, 33 insertions(+), 19 deletions(-) delete mode 100644 packages/create-svelte/shared/+vitest-typescript/src/lib/sum.js delete mode 100644 packages/create-svelte/shared/+vitest-typescript/src/lib/sum.test.js rename packages/create-svelte/shared/{+vitest+typescript => +vitest}/src/lib/sum.test.ts (100%) rename packages/create-svelte/shared/{+vitest+typescript => +vitest}/src/lib/sum.ts (50%) diff --git a/packages/create-svelte/scripts/build-templates.js b/packages/create-svelte/scripts/build-templates.js index c9d21f9a0e19..d2450f7d2b85 100644 --- a/packages/create-svelte/scripts/build-templates.js +++ b/packages/create-svelte/scripts/build-templates.js @@ -206,22 +206,41 @@ async function generate_shared() { } if (name.endsWith('.ts') && !include.includes('typescript')) { + // file includes types in TypeScript and JSDoc — + // create .js file, with and without JSDoc + const js = convert_typescript(contents); const js_name = name.replace(/\.ts$/, '.js'); - shared.add(js_name); + // typescript files.push({ - name: js_name, - include: [...include], - exclude: [...exclude, 'typescript'], - contents: convert_typescript(contents) + name, + include: [...include, 'typescript'], + exclude, + contents: strip_jsdoc(contents) }); - include.push('typescript'); - } + // checkjs + files.push({ + name: js_name, + include: [...include, 'checkjs'], + exclude, + contents: js + }); - shared.add(name); + // no typechecking + files.push({ + name: js_name, + include, + exclude: [...exclude, 'typescript', 'checkjs'], + contents: strip_jsdoc(js) + }); - files.push({ name, include, exclude, contents }); + shared.add(name); + shared.add(js_name); + } else { + shared.add(name); + files.push({ name, include, exclude, contents }); + } }); files.sort((a, b) => a.include.length + a.exclude.length - (b.include.length + b.exclude.length)); diff --git a/packages/create-svelte/shared/+vitest-typescript/src/lib/sum.js b/packages/create-svelte/shared/+vitest-typescript/src/lib/sum.js deleted file mode 100644 index c17afd446dad..000000000000 --- a/packages/create-svelte/shared/+vitest-typescript/src/lib/sum.js +++ /dev/null @@ -1,3 +0,0 @@ -export function sum(a, b) { - return a + b; -} diff --git a/packages/create-svelte/shared/+vitest-typescript/src/lib/sum.test.js b/packages/create-svelte/shared/+vitest-typescript/src/lib/sum.test.js deleted file mode 100644 index 75d59931ba79..000000000000 --- a/packages/create-svelte/shared/+vitest-typescript/src/lib/sum.test.js +++ /dev/null @@ -1,7 +0,0 @@ -import { sum } from './sum'; - -describe('sum test', () => { - it('adds 1 + 2 to equal 3', () => { - expect(sum(1, 2)).toBe(3); - }); -}); diff --git a/packages/create-svelte/shared/+vitest+typescript/src/lib/sum.test.ts b/packages/create-svelte/shared/+vitest/src/lib/sum.test.ts similarity index 100% rename from packages/create-svelte/shared/+vitest+typescript/src/lib/sum.test.ts rename to packages/create-svelte/shared/+vitest/src/lib/sum.test.ts diff --git a/packages/create-svelte/shared/+vitest+typescript/src/lib/sum.ts b/packages/create-svelte/shared/+vitest/src/lib/sum.ts similarity index 50% rename from packages/create-svelte/shared/+vitest+typescript/src/lib/sum.ts rename to packages/create-svelte/shared/+vitest/src/lib/sum.ts index 7b0ce958b03d..02237421cfc1 100644 --- a/packages/create-svelte/shared/+vitest+typescript/src/lib/sum.ts +++ b/packages/create-svelte/shared/+vitest/src/lib/sum.ts @@ -1,3 +1,8 @@ +/** + * Add two numbers + * @param {number} a + * @param {number} b + */ export function sum(a: number, b: number): number { return a + b; } From e48c02fd999f243ec697d41c20a185636c4e5e19 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 16 Aug 2022 21:42:36 -0400 Subject: [PATCH 11/21] simplify include --- packages/create-svelte/shared/+vitest/vite.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-svelte/shared/+vitest/vite.config.js b/packages/create-svelte/shared/+vitest/vite.config.js index f45166a45e7e..9e9407679314 100644 --- a/packages/create-svelte/shared/+vitest/vite.config.js +++ b/packages/create-svelte/shared/+vitest/vite.config.js @@ -4,7 +4,7 @@ import { sveltekit } from '@sveltejs/kit/vite'; const config = { plugins: [sveltekit()], test: { - include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + include: ['src/**/*.{test}.{js,ts}'], globals: true } }; From f59f9c0ac0f3d264199089a2eae67fa8e305d842 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Wed, 17 Aug 2022 15:00:30 -0400 Subject: [PATCH 12/21] add testMatch to base playwright configs, remove vitest+playwright configs --- .../+playwright+typescript/playwright.config.ts | 3 ++- .../+playwright-typescript/playwright.config.js | 3 ++- .../playwright.config.ts | 11 ----------- .../playwright.config.js | 10 ---------- 4 files changed, 4 insertions(+), 23 deletions(-) delete mode 100644 packages/create-svelte/shared/+vitest+playwright+typescript/playwright.config.ts delete mode 100644 packages/create-svelte/shared/+vitest+playwright-typescript/playwright.config.js diff --git a/packages/create-svelte/shared/+playwright+typescript/playwright.config.ts b/packages/create-svelte/shared/+playwright+typescript/playwright.config.ts index 6ad3a7faa279..be3825a3df75 100644 --- a/packages/create-svelte/shared/+playwright+typescript/playwright.config.ts +++ b/packages/create-svelte/shared/+playwright+typescript/playwright.config.ts @@ -4,7 +4,8 @@ const config: PlaywrightTestConfig = { webServer: { command: 'npm run build && npm run preview', port: 4173 - } + }, + testMatch: 'tests/**/*.{js,ts}' }; export default config; diff --git a/packages/create-svelte/shared/+playwright-typescript/playwright.config.js b/packages/create-svelte/shared/+playwright-typescript/playwright.config.js index ea17df6ed35d..f78c3c285fcc 100644 --- a/packages/create-svelte/shared/+playwright-typescript/playwright.config.js +++ b/packages/create-svelte/shared/+playwright-typescript/playwright.config.js @@ -3,7 +3,8 @@ const config = { webServer: { command: 'npm run build && npm run preview', port: 4173 - } + }, + testMatch: 'tests/**/*.js' }; export default config; diff --git a/packages/create-svelte/shared/+vitest+playwright+typescript/playwright.config.ts b/packages/create-svelte/shared/+vitest+playwright+typescript/playwright.config.ts deleted file mode 100644 index be3825a3df75..000000000000 --- a/packages/create-svelte/shared/+vitest+playwright+typescript/playwright.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { PlaywrightTestConfig } from '@playwright/test'; - -const config: PlaywrightTestConfig = { - webServer: { - command: 'npm run build && npm run preview', - port: 4173 - }, - testMatch: 'tests/**/*.{js,ts}' -}; - -export default config; diff --git a/packages/create-svelte/shared/+vitest+playwright-typescript/playwright.config.js b/packages/create-svelte/shared/+vitest+playwright-typescript/playwright.config.js deleted file mode 100644 index f78c3c285fcc..000000000000 --- a/packages/create-svelte/shared/+vitest+playwright-typescript/playwright.config.js +++ /dev/null @@ -1,10 +0,0 @@ -/** @type {import('@playwright/test').PlaywrightTestConfig} */ -const config = { - webServer: { - command: 'npm run build && npm run preview', - port: 4173 - }, - testMatch: 'tests/**/*.js' -}; - -export default config; From 0a8fc373bdfa84a4896494ee5e54c2f41b02c5eb Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Fri, 30 Sep 2022 08:52:32 -0700 Subject: [PATCH 13/21] Update packages/create-svelte/scripts/build-templates.js --- packages/create-svelte/scripts/build-templates.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/create-svelte/scripts/build-templates.js b/packages/create-svelte/scripts/build-templates.js index d2450f7d2b85..4f0d6c6591bb 100644 --- a/packages/create-svelte/scripts/build-templates.js +++ b/packages/create-svelte/scripts/build-templates.js @@ -206,8 +206,8 @@ async function generate_shared() { } if (name.endsWith('.ts') && !include.includes('typescript')) { - // file includes types in TypeScript and JSDoc — - // create .js file, with and without JSDoc + // contents includes types in TypeScript and JSDoc + // we will transform it to a version appropriate for each type checking option const js = convert_typescript(contents); const js_name = name.replace(/\.ts$/, '.js'); From 691e87476e9220133be6a0cfc97184468060fb6d Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Fri, 30 Sep 2022 08:58:53 -0700 Subject: [PATCH 14/21] Update packages/create-svelte/shared/+playwright+typescript/playwright.config.ts --- .../shared/+playwright+typescript/playwright.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-svelte/shared/+playwright+typescript/playwright.config.ts b/packages/create-svelte/shared/+playwright+typescript/playwright.config.ts index be3825a3df75..ae5a3e15cb78 100644 --- a/packages/create-svelte/shared/+playwright+typescript/playwright.config.ts +++ b/packages/create-svelte/shared/+playwright+typescript/playwright.config.ts @@ -5,7 +5,7 @@ const config: PlaywrightTestConfig = { command: 'npm run build && npm run preview', port: 4173 }, - testMatch: 'tests/**/*.{js,ts}' + testMatch: 'tests/**/.*(test|spec)\.(js|ts|mjs)' }; export default config; From 78149b54dd76238c956a2d25d7cc1442457df455 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Fri, 30 Sep 2022 09:08:18 -0700 Subject: [PATCH 15/21] cleanup test patterns --- .../shared/+playwright+typescript/playwright.config.ts | 2 +- .../shared/+playwright-typescript/playwright.config.js | 2 +- packages/create-svelte/shared/+vitest/vite.config.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/create-svelte/shared/+playwright+typescript/playwright.config.ts b/packages/create-svelte/shared/+playwright+typescript/playwright.config.ts index ae5a3e15cb78..9542799e1b18 100644 --- a/packages/create-svelte/shared/+playwright+typescript/playwright.config.ts +++ b/packages/create-svelte/shared/+playwright+typescript/playwright.config.ts @@ -5,7 +5,7 @@ const config: PlaywrightTestConfig = { command: 'npm run build && npm run preview', port: 4173 }, - testMatch: 'tests/**/.*(test|spec)\.(js|ts|mjs)' + testMatch: 'tests/**/.*(test|spec)\.(js|ts)' }; export default config; diff --git a/packages/create-svelte/shared/+playwright-typescript/playwright.config.js b/packages/create-svelte/shared/+playwright-typescript/playwright.config.js index f78c3c285fcc..23053f8a6de4 100644 --- a/packages/create-svelte/shared/+playwright-typescript/playwright.config.js +++ b/packages/create-svelte/shared/+playwright-typescript/playwright.config.js @@ -4,7 +4,7 @@ const config = { command: 'npm run build && npm run preview', port: 4173 }, - testMatch: 'tests/**/*.js' + testMatch: 'tests/**/.*(test|spec)\.(js|ts)' }; export default config; diff --git a/packages/create-svelte/shared/+vitest/vite.config.js b/packages/create-svelte/shared/+vitest/vite.config.js index 9e9407679314..d44b1676e039 100644 --- a/packages/create-svelte/shared/+vitest/vite.config.js +++ b/packages/create-svelte/shared/+vitest/vite.config.js @@ -4,7 +4,7 @@ import { sveltekit } from '@sveltejs/kit/vite'; const config = { plugins: [sveltekit()], test: { - include: ['src/**/*.{test}.{js,ts}'], + include: ['src/**/*.{test,spec}.{js,ts}'], globals: true } }; From c06a74f57d683c1244f81e0efa43f3164a137eb3 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Fri, 30 Sep 2022 09:11:23 -0700 Subject: [PATCH 16/21] newer version of vitest --- packages/create-svelte/shared/+vitest/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-svelte/shared/+vitest/package.json b/packages/create-svelte/shared/+vitest/package.json index 74ba6f84d917..fea2892af5e3 100644 --- a/packages/create-svelte/shared/+vitest/package.json +++ b/packages/create-svelte/shared/+vitest/package.json @@ -1,6 +1,6 @@ { "devDependencies": { - "vitest": "^0.19.1" + "vitest": "^0.23.4" }, "scripts": { "test:unit": "vitest" From db955458af60d95fae44c3394915603ee7217af0 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Fri, 30 Sep 2022 12:17:55 -0700 Subject: [PATCH 17/21] sverdle test --- .../src/routes/sverdle/game.test.ts | 8 ++ .../+playwright+skeletonlib/tests/test.ts | 6 ++ .../src/index.test.ts} | 4 +- .../+vitest+skeletonlib/src/index.test.ts | 5 ++ .../shared/+vitest/src/lib/sum.ts | 8 -- .../src/routes/sverdle/+page.server.ts | 78 +------------------ .../default/src/routes/sverdle/game.ts | 77 ++++++++++++++++++ 7 files changed, 98 insertions(+), 88 deletions(-) create mode 100644 packages/create-svelte/shared/+default+vitest/src/routes/sverdle/game.test.ts create mode 100644 packages/create-svelte/shared/+playwright+skeletonlib/tests/test.ts rename packages/create-svelte/shared/{+vitest/src/lib/sum.test.ts => +vitest+skeleton/src/index.test.ts} (55%) create mode 100644 packages/create-svelte/shared/+vitest+skeletonlib/src/index.test.ts delete mode 100644 packages/create-svelte/shared/+vitest/src/lib/sum.ts create mode 100644 packages/create-svelte/templates/default/src/routes/sverdle/game.ts diff --git a/packages/create-svelte/shared/+default+vitest/src/routes/sverdle/game.test.ts b/packages/create-svelte/shared/+default+vitest/src/routes/sverdle/game.test.ts new file mode 100644 index 000000000000..e46caf4c98ee --- /dev/null +++ b/packages/create-svelte/shared/+default+vitest/src/routes/sverdle/game.test.ts @@ -0,0 +1,8 @@ +import { Game } from './game'; + +describe('game test', () => { + it('returns true when a valid word is entered', () => { + const game = new Game(); + expect(game.enter('zorro')).toBe(true); + }); +}); diff --git a/packages/create-svelte/shared/+playwright+skeletonlib/tests/test.ts b/packages/create-svelte/shared/+playwright+skeletonlib/tests/test.ts new file mode 100644 index 000000000000..4e579377eed9 --- /dev/null +++ b/packages/create-svelte/shared/+playwright+skeletonlib/tests/test.ts @@ -0,0 +1,6 @@ +import { expect, test } from '@playwright/test'; + +test('index page has expected h1', async ({ page }) => { + await page.goto('/'); + expect(await page.textContent('h1')).toBe('Welcome to SvelteKit'); +}); diff --git a/packages/create-svelte/shared/+vitest/src/lib/sum.test.ts b/packages/create-svelte/shared/+vitest+skeleton/src/index.test.ts similarity index 55% rename from packages/create-svelte/shared/+vitest/src/lib/sum.test.ts rename to packages/create-svelte/shared/+vitest+skeleton/src/index.test.ts index 75d59931ba79..58f97eaac7d2 100644 --- a/packages/create-svelte/shared/+vitest/src/lib/sum.test.ts +++ b/packages/create-svelte/shared/+vitest+skeleton/src/index.test.ts @@ -1,7 +1,5 @@ -import { sum } from './sum'; - describe('sum test', () => { it('adds 1 + 2 to equal 3', () => { - expect(sum(1, 2)).toBe(3); + expect(1 + 2).toBe(3); }); }); diff --git a/packages/create-svelte/shared/+vitest+skeletonlib/src/index.test.ts b/packages/create-svelte/shared/+vitest+skeletonlib/src/index.test.ts new file mode 100644 index 000000000000..58f97eaac7d2 --- /dev/null +++ b/packages/create-svelte/shared/+vitest+skeletonlib/src/index.test.ts @@ -0,0 +1,5 @@ +describe('sum test', () => { + it('adds 1 + 2 to equal 3', () => { + expect(1 + 2).toBe(3); + }); +}); diff --git a/packages/create-svelte/shared/+vitest/src/lib/sum.ts b/packages/create-svelte/shared/+vitest/src/lib/sum.ts deleted file mode 100644 index 02237421cfc1..000000000000 --- a/packages/create-svelte/shared/+vitest/src/lib/sum.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Add two numbers - * @param {number} a - * @param {number} b - */ -export function sum(a: number, b: number): number { - return a + b; -} diff --git a/packages/create-svelte/templates/default/src/routes/sverdle/+page.server.ts b/packages/create-svelte/templates/default/src/routes/sverdle/+page.server.ts index b95dbde04d00..9e8075993ab6 100644 --- a/packages/create-svelte/templates/default/src/routes/sverdle/+page.server.ts +++ b/packages/create-svelte/templates/default/src/routes/sverdle/+page.server.ts @@ -1,5 +1,5 @@ import { invalid } from '@sveltejs/kit'; -import { words, allowed } from './words.server'; +import { Game } from './game'; import type { PageServerLoad, Actions } from './$types'; /** @type {import('./$types').PageServerLoad} */ @@ -69,79 +69,3 @@ export const actions: Actions = { cookies.delete('sverdle'); } }; - -class Game { - index: number; - guesses: string[]; - answers: string[]; - answer: string; - - /** - * Create a game object from the player's cookie, or initialise a new game - * @param {string | undefined} serialized - */ - constructor(serialized: string | undefined) { - if (serialized) { - const [index, guesses, answers] = serialized.split('-'); - - this.index = +index; - this.guesses = guesses ? guesses.split(' ') : []; - this.answers = answers ? answers.split(' ') : []; - } else { - this.index = Math.floor(Math.random() * words.length); - this.guesses = ['', '', '', '', '', '']; - this.answers = /** @type {string[]} */ [] /***/; - } - - this.answer = words[this.index]; - } - - /** - * Update game state based on a guess of a five-letter word. Returns - * true if the guess was valid, false otherwise - * @param {string[]} letters - */ - enter(letters: string[]) { - const word = letters.join(''); - const valid = allowed.has(word); - - if (!valid) return false; - - this.guesses[this.answers.length] = word; - - const available = Array.from(this.answer); - const answer = Array(5).fill('_'); - - // first, find exact matches - for (let i = 0; i < 5; i += 1) { - if (letters[i] === available[i]) { - answer[i] = 'x'; - available[i] = ' '; - } - } - - // then find close matches (this has to happen - // in a second step, otherwise an early close - // match can prevent a later exact match) - for (let i = 0; i < 5; i += 1) { - if (answer[i] === '_') { - const index = available.indexOf(letters[i]); - if (index !== -1) { - answer[i] = 'c'; - available[index] = ' '; - } - } - } - - this.answers.push(answer.join('')); - - return true; - } - - /** - * Serialize game state so it can be set as a cookie - */ - toString() { - return `${this.index}-${this.guesses.join(' ')}-${this.answers.join(' ')}`; - } -} diff --git a/packages/create-svelte/templates/default/src/routes/sverdle/game.ts b/packages/create-svelte/templates/default/src/routes/sverdle/game.ts new file mode 100644 index 000000000000..cbdfd343a561 --- /dev/null +++ b/packages/create-svelte/templates/default/src/routes/sverdle/game.ts @@ -0,0 +1,77 @@ +import { words, allowed } from './words.server'; + +export class Game { + index: number; + guesses: string[]; + answers: string[]; + answer: string; + + /** + * Create a game object from the player's cookie, or initialise a new game + * @param {string | undefined} serialized + */ + constructor(serialized: string | undefined) { + if (serialized) { + const [index, guesses, answers] = serialized.split('-'); + + this.index = +index; + this.guesses = guesses ? guesses.split(' ') : []; + this.answers = answers ? answers.split(' ') : []; + } else { + this.index = Math.floor(Math.random() * words.length); + this.guesses = ['', '', '', '', '', '']; + this.answers = /** @type {string[]} */ [] /***/; + } + + this.answer = words[this.index]; + } + + /** + * Update game state based on a guess of a five-letter word. Returns + * true if the guess was valid, false otherwise + * @param {string[]} letters + */ + enter(letters: string[]) { + const word = letters.join(''); + const valid = allowed.has(word); + + if (!valid) return false; + + this.guesses[this.answers.length] = word; + + const available = Array.from(this.answer); + const answer = Array(5).fill('_'); + + // first, find exact matches + for (let i = 0; i < 5; i += 1) { + if (letters[i] === available[i]) { + answer[i] = 'x'; + available[i] = ' '; + } + } + + // then find close matches (this has to happen + // in a second step, otherwise an early close + // match can prevent a later exact match) + for (let i = 0; i < 5; i += 1) { + if (answer[i] === '_') { + const index = available.indexOf(letters[i]); + if (index !== -1) { + answer[i] = 'c'; + available[index] = ' '; + } + } + } + + this.answers.push(answer.join('')); + + return true; + } + + /** + * Serialize game state so it can be set as a cookie + */ + toString() { + return `${this.index}-${this.guesses.join(' ')}-${this.answers.join(' ')}`; + } +} From e670e29ac7250781e4bc24dce80d47c03ae2cb5f Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Fri, 30 Sep 2022 12:21:09 -0700 Subject: [PATCH 18/21] format --- .../shared/+playwright+typescript/playwright.config.ts | 2 +- .../shared/+playwright-typescript/playwright.config.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/create-svelte/shared/+playwright+typescript/playwright.config.ts b/packages/create-svelte/shared/+playwright+typescript/playwright.config.ts index 9542799e1b18..2d5a65aee723 100644 --- a/packages/create-svelte/shared/+playwright+typescript/playwright.config.ts +++ b/packages/create-svelte/shared/+playwright+typescript/playwright.config.ts @@ -5,7 +5,7 @@ const config: PlaywrightTestConfig = { command: 'npm run build && npm run preview', port: 4173 }, - testMatch: 'tests/**/.*(test|spec)\.(js|ts)' + testMatch: 'tests/**/.*(test|spec).(js|ts)' }; export default config; diff --git a/packages/create-svelte/shared/+playwright-typescript/playwright.config.js b/packages/create-svelte/shared/+playwright-typescript/playwright.config.js index 23053f8a6de4..99422c1de342 100644 --- a/packages/create-svelte/shared/+playwright-typescript/playwright.config.js +++ b/packages/create-svelte/shared/+playwright-typescript/playwright.config.js @@ -4,7 +4,7 @@ const config = { command: 'npm run build && npm run preview', port: 4173 }, - testMatch: 'tests/**/.*(test|spec)\.(js|ts)' + testMatch: 'tests/**/.*(test|spec).(js|ts)' }; export default config; From e71e21ad8c363ce17b8b01b08e197241591b46f7 Mon Sep 17 00:00:00 2001 From: Bert B Date: Fri, 30 Sep 2022 17:44:24 -0400 Subject: [PATCH 19/21] removed vitest globals fixed double vite.config bug fixed type errors in game test --- .../src/routes/sverdle/game.test.ts | 3 ++- .../shared/+vitest+checkjs/jsconfig.json | 14 -------------- .../shared/+vitest+skeleton/src/index.test.ts | 2 ++ .../shared/+vitest+skeletonlib/src/index.test.ts | 2 ++ .../shared/+vitest+typescript/tsconfig.json | 14 -------------- .../+vitest/{vite.config.js => vite.config.ts} | 3 +-- .../create-svelte/shared/-vitest/vite.config.js | 8 -------- .../templates/default/src/routes/sverdle/game.ts | 2 +- 8 files changed, 8 insertions(+), 40 deletions(-) delete mode 100644 packages/create-svelte/shared/+vitest+checkjs/jsconfig.json delete mode 100644 packages/create-svelte/shared/+vitest+typescript/tsconfig.json rename packages/create-svelte/shared/+vitest/{vite.config.js => vite.config.ts} (73%) delete mode 100644 packages/create-svelte/shared/-vitest/vite.config.js diff --git a/packages/create-svelte/shared/+default+vitest/src/routes/sverdle/game.test.ts b/packages/create-svelte/shared/+default+vitest/src/routes/sverdle/game.test.ts index e46caf4c98ee..99028b6f561e 100644 --- a/packages/create-svelte/shared/+default+vitest/src/routes/sverdle/game.test.ts +++ b/packages/create-svelte/shared/+default+vitest/src/routes/sverdle/game.test.ts @@ -1,8 +1,9 @@ +import { describe, it, expect } from 'vitest'; import { Game } from './game'; describe('game test', () => { it('returns true when a valid word is entered', () => { const game = new Game(); - expect(game.enter('zorro')).toBe(true); + expect(game.enter('zorro'.split(''))).toBe(true); }); }); diff --git a/packages/create-svelte/shared/+vitest+checkjs/jsconfig.json b/packages/create-svelte/shared/+vitest+checkjs/jsconfig.json deleted file mode 100644 index eeb6cfdca156..000000000000 --- a/packages/create-svelte/shared/+vitest+checkjs/jsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "types": ["vitest/globals"], - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true - } -} diff --git a/packages/create-svelte/shared/+vitest+skeleton/src/index.test.ts b/packages/create-svelte/shared/+vitest+skeleton/src/index.test.ts index 58f97eaac7d2..e07cbbd72507 100644 --- a/packages/create-svelte/shared/+vitest+skeleton/src/index.test.ts +++ b/packages/create-svelte/shared/+vitest+skeleton/src/index.test.ts @@ -1,3 +1,5 @@ +import { describe, it, expect } from 'vitest'; + describe('sum test', () => { it('adds 1 + 2 to equal 3', () => { expect(1 + 2).toBe(3); diff --git a/packages/create-svelte/shared/+vitest+skeletonlib/src/index.test.ts b/packages/create-svelte/shared/+vitest+skeletonlib/src/index.test.ts index 58f97eaac7d2..e07cbbd72507 100644 --- a/packages/create-svelte/shared/+vitest+skeletonlib/src/index.test.ts +++ b/packages/create-svelte/shared/+vitest+skeletonlib/src/index.test.ts @@ -1,3 +1,5 @@ +import { describe, it, expect } from 'vitest'; + describe('sum test', () => { it('adds 1 + 2 to equal 3', () => { expect(1 + 2).toBe(3); diff --git a/packages/create-svelte/shared/+vitest+typescript/tsconfig.json b/packages/create-svelte/shared/+vitest+typescript/tsconfig.json deleted file mode 100644 index eeb6cfdca156..000000000000 --- a/packages/create-svelte/shared/+vitest+typescript/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "types": ["vitest/globals"], - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true - } -} diff --git a/packages/create-svelte/shared/+vitest/vite.config.js b/packages/create-svelte/shared/+vitest/vite.config.ts similarity index 73% rename from packages/create-svelte/shared/+vitest/vite.config.js rename to packages/create-svelte/shared/+vitest/vite.config.ts index d44b1676e039..652979fb41bc 100644 --- a/packages/create-svelte/shared/+vitest/vite.config.js +++ b/packages/create-svelte/shared/+vitest/vite.config.ts @@ -4,8 +4,7 @@ import { sveltekit } from '@sveltejs/kit/vite'; const config = { plugins: [sveltekit()], test: { - include: ['src/**/*.{test,spec}.{js,ts}'], - globals: true + include: ['src/**/*.{test,spec}.{js,ts}'] } }; diff --git a/packages/create-svelte/shared/-vitest/vite.config.js b/packages/create-svelte/shared/-vitest/vite.config.js deleted file mode 100644 index 8747050534d8..000000000000 --- a/packages/create-svelte/shared/-vitest/vite.config.js +++ /dev/null @@ -1,8 +0,0 @@ -import { sveltekit } from '@sveltejs/kit/vite'; - -/** @type {import('vite').UserConfig} */ -const config = { - plugins: [sveltekit()] -}; - -export default config; diff --git a/packages/create-svelte/templates/default/src/routes/sverdle/game.ts b/packages/create-svelte/templates/default/src/routes/sverdle/game.ts index cbdfd343a561..d5cbe932e4cb 100644 --- a/packages/create-svelte/templates/default/src/routes/sverdle/game.ts +++ b/packages/create-svelte/templates/default/src/routes/sverdle/game.ts @@ -10,7 +10,7 @@ export class Game { * Create a game object from the player's cookie, or initialise a new game * @param {string | undefined} serialized */ - constructor(serialized: string | undefined) { + constructor(serialized: string | undefined = undefined) { if (serialized) { const [index, guesses, answers] = serialized.split('-'); From 658dd56fd4578f6a10632fe2cd6942b38630ec4e Mon Sep 17 00:00:00 2001 From: Bert B Date: Mon, 3 Oct 2022 09:07:16 -0400 Subject: [PATCH 20/21] Rename vite.config.ts to vite.config.js --- .../shared/+vitest/{vite.config.ts => vite.config.js} | 0 packages/create-svelte/shared/{vite.config.ts => vite.config.js} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename packages/create-svelte/shared/+vitest/{vite.config.ts => vite.config.js} (100%) rename packages/create-svelte/shared/{vite.config.ts => vite.config.js} (100%) diff --git a/packages/create-svelte/shared/+vitest/vite.config.ts b/packages/create-svelte/shared/+vitest/vite.config.js similarity index 100% rename from packages/create-svelte/shared/+vitest/vite.config.ts rename to packages/create-svelte/shared/+vitest/vite.config.js diff --git a/packages/create-svelte/shared/vite.config.ts b/packages/create-svelte/shared/vite.config.js similarity index 100% rename from packages/create-svelte/shared/vite.config.ts rename to packages/create-svelte/shared/vite.config.js From 8d3d11d26d8efd06df2c39d96814b33a46f11e39 Mon Sep 17 00:00:00 2001 From: Bert B Date: Mon, 3 Oct 2022 09:16:30 -0400 Subject: [PATCH 21/21] Fixed types on default vite config --- packages/create-svelte/shared/vite.config.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/create-svelte/shared/vite.config.js b/packages/create-svelte/shared/vite.config.js index 60ef89c74357..8747050534d8 100644 --- a/packages/create-svelte/shared/vite.config.js +++ b/packages/create-svelte/shared/vite.config.js @@ -1,8 +1,7 @@ import { sveltekit } from '@sveltejs/kit/vite'; -import type { UserConfig } from 'vite'; /** @type {import('vite').UserConfig} */ -const config: UserConfig = { +const config = { plugins: [sveltekit()] };