e62343fdd3
E2E tests were failing because the dev login selector redirects to /login when AUTH_DISABLED=true and no dev user is in localStorage. Added a shared Playwright fixture that pre-seeds localStorage with a default dev user before each test. Also rebased onto latest main to resolve merge conflict in App.test.tsx. Co-Authored-By: Paperclip <noreply@paperclip.ing>
29 lines
952 B
TypeScript
29 lines
952 B
TypeScript
import { getDevUser } from "../pages/DevLoginSelector.js";
|
|
|
|
const originalFetch = window.fetch;
|
|
|
|
/**
|
|
* Patches global fetch to include X-Dev-User-Id header on API requests
|
|
* when a dev user is selected via the login selector.
|
|
*
|
|
* Intentionally mutates window.fetch — this is dev-only (AUTH_DISABLED=true).
|
|
*/
|
|
export function installDevFetchInterceptor() {
|
|
window.fetch = function (input: RequestInfo | URL, init?: RequestInit) {
|
|
const user = getDevUser();
|
|
if (!user) return originalFetch(input, init);
|
|
|
|
const url = typeof input === "string" ? input : input instanceof URL ? input.toString() : (input as Request).url;
|
|
|
|
// Only inject header for API calls
|
|
if (!url.startsWith("/api/")) return originalFetch(input, init);
|
|
|
|
const headers = new Headers(init?.headers);
|
|
if (!headers.has("X-Dev-User-Id")) {
|
|
headers.set("X-Dev-User-Id", user.id);
|
|
}
|
|
|
|
return originalFetch(input, { ...init, headers });
|
|
};
|
|
}
|