From 74bcb5be7dae721561f204ed3f693221388c687e Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Tue, 18 Mar 2025 15:48:07 +0000 Subject: [PATCH] test: use `srvx` and random port for remote provider (#31432) --- package.json | 2 ++ pnpm-lock.yaml | 15 ++++++++-- test/fixtures/remote-provider/index.ts | 21 -------------- test/fixtures/remote-provider/package.json | 5 ---- test/nuxt/nuxt-island.test.ts | 33 +++++++++++++++------- 5 files changed, 38 insertions(+), 38 deletions(-) delete mode 100644 test/fixtures/remote-provider/index.ts delete mode 100644 test/fixtures/remote-provider/package.json diff --git a/package.json b/package.json index 256253d23e..8966de2324 100644 --- a/package.json +++ b/package.json @@ -105,6 +105,7 @@ "eslint-plugin-perfectionist": "4.10.1", "eslint-typegen": "2.1.0", "estree-walker": "3.0.3", + "get-port-please": "3.1.2", "h3": "1.15.1", "happy-dom": "17.4.4", "installed-check": "9.3.0", @@ -123,6 +124,7 @@ "rollup": "4.36.0", "semver": "7.7.1", "sherif": "1.4.0", + "srvx": "0.2.5", "std-env": "3.8.1", "tinyexec": "0.3.2", "tinyglobby": "0.2.12", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 34bdf46d2c..6ec8c02117 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -137,6 +137,9 @@ importers: estree-walker: specifier: 3.0.3 version: 3.0.3 + get-port-please: + specifier: 3.1.2 + version: 3.1.2 h3: specifier: 1.15.1 version: 1.15.1 @@ -191,6 +194,9 @@ importers: sherif: specifier: 1.4.0 version: 1.4.0 + srvx: + specifier: 0.2.5 + version: 0.2.5 std-env: specifier: 3.8.1 version: 3.8.1 @@ -1193,8 +1199,6 @@ importers: specifier: workspace:* version: link:../../../packages/nuxt - test/fixtures/remote-provider: {} - test/fixtures/runtime-compiler: dependencies: nuxt: @@ -6875,6 +6879,9 @@ packages: resolution: {integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==} engines: {node: '>=12'} + srvx@0.2.5: + resolution: {integrity: sha512-G63uf9Emf8PQPlWkBKFfcqTkVjwIF5Z8lfECidSiaAXrd19Pj6ijU676yRfYP3KShZY7KmLsfb4/unIOCtnWfA==} + stable-hash@0.0.4: resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} @@ -14477,6 +14484,10 @@ snapshots: split-on-first@3.0.0: {} + srvx@0.2.5: + dependencies: + cookie-es: 2.0.0 + stable-hash@0.0.4: {} stackback@0.0.2: {} diff --git a/test/fixtures/remote-provider/index.ts b/test/fixtures/remote-provider/index.ts deleted file mode 100644 index e3b45150d0..0000000000 --- a/test/fixtures/remote-provider/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -import http from 'node:http' - -export function createSimpleRemoteIslandProvider (port = 3001) { - const server = http.createServer((req, res) => { - const response = { - html: '
hello world from another server
', - state: {}, - head: { - link: [], - style: [], - }, - } - res.statusCode = 200 - res.setHeader('Content-Type', 'application/json') - res.end(JSON.stringify(response)) - }) - - server.listen(port) - - return server -} diff --git a/test/fixtures/remote-provider/package.json b/test/fixtures/remote-provider/package.json deleted file mode 100644 index 79fc018756..0000000000 --- a/test/fixtures/remote-provider/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "remote-provider", - "version": "0.0.0", - "private": true -} \ No newline at end of file diff --git a/test/nuxt/nuxt-island.test.ts b/test/nuxt/nuxt-island.test.ts index a12123884f..3b957ef52e 100644 --- a/test/nuxt/nuxt-island.test.ts +++ b/test/nuxt/nuxt-island.test.ts @@ -1,9 +1,10 @@ -import { beforeEach } from 'node:test' -import { describe, expect, it, vi } from 'vitest' +import { beforeEach, describe, expect, it, vi } from 'vitest' import { defineComponent, h, nextTick, popScopeId, pushScopeId } from 'vue' +import { serve } from 'srvx' import { mountSuspended } from '@nuxt/test-utils/runtime' +import { getPort } from 'get-port-please' + import { createServerComponent } from '../../packages/nuxt/src/components/runtime/server-component' -import { createSimpleRemoteIslandProvider } from '../fixtures/remote-provider' import NuxtIsland from '../../packages/nuxt/src/app/components/nuxt-island' vi.mock('#build/nuxt.config.mjs', async (original) => { @@ -31,12 +32,12 @@ function expectNoConsoleIssue () { expect(consoleWarn).not.toHaveBeenCalled() } -beforeEach(() => { - consoleError.mockClear() - consoleWarn.mockClear() -}) - describe('runtime server component', () => { + beforeEach(() => { + consoleError.mockClear() + consoleWarn.mockClear() + }) + it('expect no data-v- attributes #23051', () => { // @ts-expect-error mock vi.mocked(h).mockImplementation(() => null) @@ -67,12 +68,24 @@ describe('runtime server component', () => { }) it('expect remote island to be rendered', async () => { - const server = createSimpleRemoteIslandProvider() + const port = await getPort({ host: 'localhost', public: false, random: true }) + const server = serve({ + port, + fetch () { + return new Response(JSON.stringify({ + html: '
hello world from another server
', + state: {}, + head: { link: [], style: [] }, + }), { headers: { 'Content-Type': 'application/json' } }) + }, + }) + + await server.ready() const wrapper = await mountSuspended(NuxtIsland, { props: { name: 'Test', - source: 'http://localhost:3001', + source: `http://localhost:${port}`, }, })