From: Daniel Roe Date: Wed, 17 Aug 2022 13:41:06 +0000 (+0200) Subject: test(nuxt): add e2e test X-Git-Tag: @pinia/nuxt@0.4.1~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7a5d2cfeeb1f6b9b31ec9cef34797028be30d9ec;p=thirdparty%2Fvuejs%2Fpinia.git test(nuxt): add e2e test --- diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 754794cf..fe2c43ee 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,6 +27,7 @@ jobs: - run: pnpm install - run: pnpm run lint - run: pnpm run test:types + - run: pnpm run -r dev:prepare - run: pnpm run test:vitest - run: pnpm run build - run: pnpm run build:dts diff --git a/packages/nuxt/__tests__/nuxt.spec.ts b/packages/nuxt/__tests__/nuxt.spec.ts new file mode 100644 index 00000000..973c7654 --- /dev/null +++ b/packages/nuxt/__tests__/nuxt.spec.ts @@ -0,0 +1,29 @@ +import { fileURLToPath } from 'node:url' +import { describe, it, expect } from 'vitest' +import { setup, $fetch } from '@nuxt/test-utils' + +describe('works with nuxt', async () => { + await setup({ + server: true, + rootDir: fileURLToPath(new URL('../playground', import.meta.url)), + nuxtConfig: { + hooks: { + 'vite:extendConfig'(config, { isClient }) { + config.define!.__BROWSER__ = isClient + }, + }, + vite: { + define: { + __DEV__: false, + __TEST__: true, + __FEATURE_PROD_DEVTOOLS__: false, + }, + }, + }, + }) + + it('works on ssr', async () => { + const html = await $fetch('/') + expect(html).toContain('Count: 101') + }) +}) diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index da42db67..840f0cb2 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -50,6 +50,7 @@ }, "devDependencies": { "@nuxt/module-builder": "latest", + "@nuxt/test-utils": "^3.0.0-rc.8", "nuxt": "^3.0.0-rc.8", "typescript": "^4.7.4", "vue-tsc": "^0.39.5" diff --git a/packages/nuxt/playground/nuxt.config.ts b/packages/nuxt/playground/nuxt.config.ts index 3bc8ae01..17edf8dd 100644 --- a/packages/nuxt/playground/nuxt.config.ts +++ b/packages/nuxt/playground/nuxt.config.ts @@ -1,6 +1,13 @@ +import { fileURLToPath } from 'node:url' import { defineNuxtConfig } from 'nuxt' import piniaModule from '../src/module' export default defineNuxtConfig({ + alias: { + pinia: fileURLToPath(new URL('../../pinia/src/index.ts', import.meta.url)), + }, modules: [piniaModule], + pinia: { + autoImports: [['defineStore', 'definePiniaStore']], + }, }) diff --git a/packages/nuxt/src/module.ts b/packages/nuxt/src/module.ts index a130303a..2ea0dc00 100644 --- a/packages/nuxt/src/module.ts +++ b/packages/nuxt/src/module.ts @@ -61,9 +61,11 @@ export default defineNuxtModule({ nuxt.options.build.transpile.push(resolver.resolve('./runtime')) // Make sure we use the mjs build for pinia - nuxt.options.alias.pinia = resolveModule('pinia/dist/pinia.mjs', { - paths: [nuxt.options.rootDir, import.meta.url], - }) + nuxt.options.alias.pinia = + nuxt.options.alias.pinia || + resolveModule('pinia/dist/pinia.mjs', { + paths: [nuxt.options.rootDir, import.meta.url], + }) nuxt.hook('prepare:types', ({ references }) => { references.push({ types: '@pinia/nuxt' }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0dd114e2..ee7fba3f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -90,6 +90,7 @@ importers: specifiers: '@nuxt/kit': 3.0.0-rc.6 '@nuxt/module-builder': latest + '@nuxt/test-utils': ^3.0.0-rc.8 nuxt: ^3.0.0-rc.8 pinia: workspace:^2.0.18 typescript: ^4.7.4 @@ -99,6 +100,7 @@ importers: pinia: link:../pinia devDependencies: '@nuxt/module-builder': 0.1.7 + '@nuxt/test-utils': 3.0.0-rc.8 nuxt: 3.0.0-rc.8 typescript: 4.7.4 vue-tsc: 0.39.5_typescript@4.7.4 @@ -969,6 +971,27 @@ packages: - webpack dev: true + /@nuxt/test-utils/3.0.0-rc.8: + resolution: {integrity: sha512-YdTkMVensrWpMoDnUX4oNRZbaMarNTxDNYjRvZOe1QFtEc8zjqrBhkUfwzA9n9bTzN0xiDxrSLnVNndEY5mfOg==} + engines: {node: ^14.16.0 || ^16.11.0 || ^17.0.0 || ^18.0.0} + peerDependencies: + vue: ^3.2.37 + dependencies: + '@nuxt/kit': 3.0.0-rc.8 + '@nuxt/schema': 3.0.0-rc.8 + defu: 6.1.0 + execa: 6.1.0 + get-port-please: 2.6.1 + jiti: 1.14.0 + ohmyfetch: 0.4.18 + transitivePeerDependencies: + - esbuild + - rollup + - supports-color + - vite + - webpack + dev: true + /@nuxt/ui-templates/0.3.2: resolution: {integrity: sha512-o0KRB0Mna/M5QxqMe+XvlfKczFz3CQMlkEr6Ztyphp+00jq1Ti0AXdq1XAt9hXI3LoZRh4+2vVX331UaIZQQzQ==} dev: true