n8n/packages/testing/playwright/utils/url-helper.ts
n8n-cat-bot[bot] ec267acdbc
test: Wait for backend readiness before the Playwright database reset (#38366)
Co-authored-by: n8n-cat-bot[bot] <n8n-cat-bot[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Declan Carroll <declan@n8n.io>
2026-09-10 16:48:50 +00:00

36 lines
1.1 KiB
TypeScript

/**
* Extract port from a URL string
*/
export function getPortFromUrl(url: string): string {
const parsedUrl = new URL(url);
return parsedUrl.port || (parsedUrl.protocol === 'https:' ? '443' : '80');
}
/**
* Get the backend URL from environment variables
* Returns N8N_BASE_URL
*/
export function getBackendUrl(): string | undefined {
return process.env.N8N_BASE_URL;
}
/**
* Get the frontend URL from environment variables
* When N8N_EDITOR_URL is set (dev mode), use it for the frontend
* Otherwise, use the same URL as the backend
*/
export function getFrontendUrl(): string | undefined {
return process.env.N8N_EDITOR_URL ?? process.env.N8N_BASE_URL;
}
/**
* Build the readiness URL of a backend.
* The backend serves readiness at `<N8N_ENDPOINT_HEALTH>/readiness` and adds a
* missing leading slash to that variable, so mirror both rules here.
*/
export function getReadinessUrl(baseUrl: string, healthEndpoint?: string): string {
const health = healthEndpoint ?? '/healthz';
const healthPath = health.startsWith('/') ? health : `/${health}`;
return `${baseUrl.replace(/\/+$/, '')}${healthPath}/readiness`;
}