forked from baron/baron-sso
production 푸시 초안
This commit is contained in:
@@ -6,9 +6,6 @@ import { expect, test, type Route } from "@playwright/test";
|
||||
const targetTenantId =
|
||||
process.env.TENANT_PROFILE_PERF_TENANT_ID ??
|
||||
"56cd0fd7-b62a-43c0-8db9-74a30468d7cb";
|
||||
const actualApiBaseUrl =
|
||||
process.env.TENANT_PROFILE_PERF_API_BASE_URL ?? "http://localhost:5173/api";
|
||||
const normalizedActualApiBaseUrl = actualApiBaseUrl.replace(/\/$/, "");
|
||||
const evidenceDir = path.resolve("e2e-evidence");
|
||||
|
||||
type ApiTiming = {
|
||||
@@ -52,6 +49,35 @@ async function fulfillFromLocalApi(route: Route, targetUrl?: string) {
|
||||
});
|
||||
}
|
||||
|
||||
function resolveActualApiBaseUrl() {
|
||||
const explicitApiBaseUrl = process.env.TENANT_PROFILE_PERF_API_BASE_URL;
|
||||
if (explicitApiBaseUrl?.trim()) {
|
||||
return explicitApiBaseUrl.trim().replace(/\/$/, "");
|
||||
}
|
||||
|
||||
const proxyTarget = process.env.API_PROXY_TARGET;
|
||||
if (proxyTarget?.trim()) {
|
||||
return new URL("/api", `${proxyTarget.trim().replace(/\/$/, "")}/`)
|
||||
.toString()
|
||||
.replace(/\/$/, "");
|
||||
}
|
||||
|
||||
return "http://127.0.0.1:5173/api";
|
||||
}
|
||||
|
||||
async function canFetchJsonFromLocalApi(apiBaseUrl: string) {
|
||||
const probeUrl = `${apiBaseUrl.replace(/\/$/, "")}/v1/user/me`;
|
||||
try {
|
||||
const response = await fetch(probeUrl, {
|
||||
headers: { "x-test-role": "super_admin" },
|
||||
});
|
||||
const contentType = response.headers.get("content-type") ?? "";
|
||||
return contentType.toLowerCase().includes("application/json");
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function percentile(values: number[], ratio: number) {
|
||||
const sorted = [...values].sort((left, right) => left - right);
|
||||
const index = Math.min(
|
||||
@@ -65,6 +91,13 @@ test.describe("Tenant profile local performance evidence", () => {
|
||||
test("loads org config fields through the local API within 500ms", async ({
|
||||
page,
|
||||
}, testInfo) => {
|
||||
const actualApiBaseUrl = resolveActualApiBaseUrl();
|
||||
test.skip(
|
||||
!(await canFetchJsonFromLocalApi(actualApiBaseUrl)),
|
||||
`Local API is not available at ${actualApiBaseUrl}; set TENANT_PROFILE_PERF_API_BASE_URL to run this evidence test.`,
|
||||
);
|
||||
const normalizedActualApiBaseUrl = actualApiBaseUrl.replace(/\/$/, "");
|
||||
|
||||
fs.mkdirSync(evidenceDir, { recursive: true });
|
||||
await page.setViewportSize({ width: 1440, height: 900 });
|
||||
|
||||
|
||||
Reference in New Issue
Block a user