From e8be04c968d976f16c15aa350f9f8a40e6afe102 Mon Sep 17 00:00:00 2001 From: zhi Date: Sun, 15 Mar 2026 22:40:00 +0000 Subject: [PATCH] test: add local proxy for wizard/backend/frontend --- Dockerfile | 2 +- server/proxy.mjs | 55 +++++++++++++++++++++++++++++++++++++++++ server/wizard-proxy.mjs | 32 ------------------------ 3 files changed, 56 insertions(+), 33 deletions(-) create mode 100644 server/proxy.mjs delete mode 100644 server/wizard-proxy.mjs diff --git a/Dockerfile b/Dockerfile index a71a364..77a07d0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,4 +28,4 @@ WORKDIR /app COPY package*.json ./ RUN npm install && npm install -g playwright && playwright install chromium COPY . . -CMD ["bash", "-lc", "node server/wizard-proxy.mjs & npx playwright test"] +CMD ["bash", "-lc", "node server/proxy.mjs & npx playwright test"] diff --git a/server/proxy.mjs b/server/proxy.mjs new file mode 100644 index 0000000..0d0afb7 --- /dev/null +++ b/server/proxy.mjs @@ -0,0 +1,55 @@ +import http from 'http' + +const createProxy = ({ name, listenPort, targetHost, targetPort }) => { + http + .createServer((req, res) => { + const proxyReq = http.request( + { + hostname: targetHost, + port: targetPort, + path: req.url, + method: req.method, + headers: req.headers, + }, + (proxyRes) => { + res.writeHead(proxyRes.statusCode || 502, proxyRes.headers) + proxyRes.pipe(res) + } + ) + + proxyReq.on('error', (err) => { + res.statusCode = 502 + res.end(`Bad gateway: ${err.message}`) + }) + + req.pipe(proxyReq) + }) + .listen(listenPort, '127.0.0.1', () => { + console.log(`${name} proxy listening on 127.0.0.1:${listenPort} -> ${targetHost}:${targetPort}`) + }) +} + +const wizardPort = Number(process.env.WIZARD_PORT || 8080) +const backendPort = Number(process.env.BACKEND_PORT || 8000) +const frontendPort = Number(process.env.FRONTEND_PORT || 3000) + +createProxy({ + name: 'wizard', + listenPort: wizardPort, + targetHost: process.env.WIZARD_HOST || 'wizard', + targetPort: wizardPort, +}) + +createProxy({ + name: 'backend', + listenPort: backendPort, + targetHost: process.env.BACKEND_HOST || 'backend', + targetPort: backendPort, +}) + +createProxy({ + name: 'frontend', + listenPort: frontendPort, + targetHost: process.env.FRONTEND_HOST || 'frontend', + targetPort: frontendPort, +}) diff --git a/server/wizard-proxy.mjs b/server/wizard-proxy.mjs deleted file mode 100644 index 4ee1dfe..0000000 --- a/server/wizard-proxy.mjs +++ /dev/null @@ -1,32 +0,0 @@ -import http from 'http' - -const listenPort = Number(process.env.WIZARD_PORT || 8080) -const targetHost = process.env.WIZARD_HOST || 'wizard' -const targetPort = Number(process.env.WIZARD_PORT || 8080) - -http - .createServer((req, res) => { - const proxyReq = http.request( - { - hostname: targetHost, - port: targetPort, - path: req.url, - method: req.method, - headers: req.headers, - }, - (proxyRes) => { - res.writeHead(proxyRes.statusCode || 502, proxyRes.headers) - proxyRes.pipe(res) - } - ) - - proxyReq.on('error', (err) => { - res.statusCode = 502 - res.end(`Bad gateway: ${err.message}`) - }) - - req.pipe(proxyReq) - }) - .listen(listenPort, '127.0.0.1', () => { - console.log(`wizard proxy listening on 127.0.0.1:${listenPort} -> ${targetHost}:${targetPort}`) - })