fix(ci): fix login e2e session mock and prettier formatting

This commit is contained in:
Arthur Bassi 2026-06-15 10:03:02 -03:00
parent c7787bda98
commit 3b39b858c1
2 changed files with 123 additions and 32 deletions

View file

@ -6,8 +6,17 @@ const TEST_USER = {
name: "Test User",
};
async function mockUnauthenticatedSession(page: Page) {
async function mockSession(page: Page, isAuthenticated: () => boolean = () => false) {
await page.route("**/api/Authentication/GetCurrentUser", async (route) => {
if (isAuthenticated()) {
await route.fulfill({
status: 200,
contentType: "application/json",
body: JSON.stringify({ data: TEST_USER }),
});
return;
}
await route.fulfill({
status: 401,
contentType: "application/json",
@ -35,7 +44,7 @@ async function mockDashboardStats(page: Page) {
test.describe("Login page", () => {
test.beforeEach(async ({ page }) => {
await mockUnauthenticatedSession(page);
await mockSession(page);
await mockDashboardStats(page);
});
@ -77,7 +86,13 @@ test.describe("Login page", () => {
});
test("logs in successfully and navigates to dashboard", async ({ page }) => {
let authenticated = false;
await page.unroute("**/api/Authentication/GetCurrentUser");
await mockSession(page, () => authenticated);
await page.route("**/api/Authentication/Login", async (route) => {
authenticated = true;
await route.fulfill({
status: 200,
contentType: "application/json",

View file

@ -32,9 +32,7 @@ function toDefaultExport(content, exportName) {
`export default function ${exportName}`,
);
}
return result
.replace(/^export \{ ([A-Za-z]+) as default \} from .+;\s*$/m, "")
.trimEnd() + "\n";
return result.replace(/^export \{ ([A-Za-z]+) as default \} from .+;\s*$/m, "").trimEnd() + "\n";
}
function copyRoutesTree() {
@ -58,7 +56,13 @@ function updateProtectedLayout() {
write(layoutPath, content);
}
function mergePage(sourceRel, destRel, exportName, importReplacements = [], { namedOnly = false } = {}) {
function mergePage(
sourceRel,
destRel,
exportName,
importReplacements = [],
{ namedOnly = false } = {},
) {
const source = path.join(app, sourceRel);
if (!fs.existsSync(source)) {
console.warn("Missing source:", sourceRel);
@ -87,7 +91,7 @@ function writeReExport(destRel, componentPath, { nestedEdit = false } = {}) {
write(path.join(src, "app-root.tsx"), read(path.join(app, "app-root.tsx")));
let main = read(path.join(src, "main.tsx"));
main = main.replace('@/app/app-root', '@/app-root');
main = main.replace("@/app/app-root", "@/app-root");
write(path.join(src, "main.tsx"), main);
let vite = read(path.join(root, "vite.config.ts"));
@ -106,29 +110,57 @@ updateProtectedLayout();
// --- accounts pilot ---
mergePage("accounts/accounts-list-page.tsx", "(protected)/accounts/index.tsx", "AccountsListPage");
mergePage("accounts/account-form-page.tsx", "(protected)/accounts/_components/account-form.tsx", "AccountFormPage");
mergePage(
"accounts/account-form-page.tsx",
"(protected)/accounts/_components/account-form.tsx",
"AccountFormPage",
);
writeReExport("(protected)/accounts/new.tsx", "./_components/account-form");
writeReExport("(protected)/accounts/edit/[id].tsx", "./_components/account-form");
// --- contacts, employees, locations ---
mergePage("contacts/contacts-list-page.tsx", "(protected)/contacts/index.tsx", "ContactsListPage");
mergePage("contacts/contact-form-page.tsx", "(protected)/contacts/_components/contact-form.tsx", "ContactFormPage");
mergePage(
"contacts/contact-form-page.tsx",
"(protected)/contacts/_components/contact-form.tsx",
"ContactFormPage",
);
writeReExport("(protected)/contacts/new.tsx", "./_components/contact-form");
writeReExport("(protected)/contacts/edit/[id].tsx", "./_components/contact-form");
mergePage("employees/employees-list-page.tsx", "(protected)/employees/index.tsx", "EmployeesListPage");
mergePage("employees/employee-form-page.tsx", "(protected)/employees/_components/employee-form.tsx", "EmployeeFormPage");
mergePage(
"employees/employees-list-page.tsx",
"(protected)/employees/index.tsx",
"EmployeesListPage",
);
mergePage(
"employees/employee-form-page.tsx",
"(protected)/employees/_components/employee-form.tsx",
"EmployeeFormPage",
);
writeReExport("(protected)/employees/new.tsx", "./_components/employee-form");
writeReExport("(protected)/employees/edit/[id].tsx", "./_components/employee-form");
mergePage("locations/locations-list-page.tsx", "(protected)/locations/index.tsx", "LocationsListPage");
mergePage("locations/location-form-page.tsx", "(protected)/locations/_components/location-form.tsx", "LocationFormPage");
mergePage(
"locations/locations-list-page.tsx",
"(protected)/locations/index.tsx",
"LocationsListPage",
);
mergePage(
"locations/location-form-page.tsx",
"(protected)/locations/_components/location-form.tsx",
"LocationFormPage",
);
writeReExport("(protected)/locations/new.tsx", "./_components/location-form");
writeReExport("(protected)/locations/edit/[id].tsx", "./_components/location-form");
// --- assets, vendors, followups, pmschedules ---
mergePage("assets/assets-list-page.tsx", "(protected)/assets/index.tsx", "AssetsListPage");
mergePage("assets/asset-form-page.tsx", "(protected)/assets/_components/asset-form.tsx", "AssetFormPage");
mergePage(
"assets/asset-form-page.tsx",
"(protected)/assets/_components/asset-form.tsx",
"AssetFormPage",
);
writeReExport("(protected)/assets/new.tsx", "./_components/asset-form");
writeReExport("(protected)/assets/edit/[id].tsx", "./_components/asset-form");
@ -146,29 +178,65 @@ copyFile(
writeReExport("(protected)/vendors/new.tsx", "./_components/vendor-form");
writeReExport("(protected)/vendors/edit/[id].tsx", "./_components/vendor-form");
mergePage("follow-ups/follow-ups-list-page.tsx", "(protected)/followups/index.tsx", "FollowUpsListPage");
mergePage("follow-ups/follow-up-form-page.tsx", "(protected)/followups/_components/follow-up-form.tsx", "FollowUpFormPage");
mergePage(
"follow-ups/follow-ups-list-page.tsx",
"(protected)/followups/index.tsx",
"FollowUpsListPage",
);
mergePage(
"follow-ups/follow-up-form-page.tsx",
"(protected)/followups/_components/follow-up-form.tsx",
"FollowUpFormPage",
);
writeReExport("(protected)/followups/new.tsx", "./_components/follow-up-form");
writeReExport("(protected)/followups/edit/[id].tsx", "./_components/follow-up-form");
mergePage("pm-schedules/pm-schedules-list-page.tsx", "(protected)/pmschedules/index.tsx", "PmSchedulesListPage");
mergePage("pm-schedules/pm-schedule-form-page.tsx", "(protected)/pmschedules/_components/pm-schedule-form.tsx", "PmScheduleFormPage");
mergePage(
"pm-schedules/pm-schedules-list-page.tsx",
"(protected)/pmschedules/index.tsx",
"PmSchedulesListPage",
);
mergePage(
"pm-schedules/pm-schedule-form-page.tsx",
"(protected)/pmschedules/_components/pm-schedule-form.tsx",
"PmScheduleFormPage",
);
writeReExport("(protected)/pmschedules/new.tsx", "./_components/pm-schedule-form");
writeReExport("(protected)/pmschedules/edit/[id].tsx", "./_components/pm-schedule-form");
// --- calendar, uplifts, vendor-pos, settings, dashboard, login ---
mergePage("calendar/calendar-page.tsx", "(protected)/calendar/index.tsx", "CalendarPage");
mergePage("calendar/event-form-page.tsx", "(protected)/calendar/_components/event-form.tsx", "EventFormPage");
mergePage(
"calendar/event-form-page.tsx",
"(protected)/calendar/_components/event-form.tsx",
"EventFormPage",
);
writeReExport("(protected)/calendar/new.tsx", "./_components/event-form");
writeReExport("(protected)/calendar/edit/[id].tsx", "./_components/event-form");
mergePage("uplifts/uplift-queue-page.tsx", "(protected)/uplifts/index.tsx", "UpliftQueuePage");
mergePage("vendor-pos/vendor-pos-list-page.tsx", "(protected)/vendor-pos/index.tsx", "VendorPosListPage");
mergePage("vendor-pos/vendor-po-view-page.tsx", "(protected)/vendor-pos/[id].tsx", "VendorPoViewPage");
mergePage(
"vendor-pos/vendor-pos-list-page.tsx",
"(protected)/vendor-pos/index.tsx",
"VendorPosListPage",
);
mergePage(
"vendor-pos/vendor-po-view-page.tsx",
"(protected)/vendor-pos/[id].tsx",
"VendorPoViewPage",
);
mergePage("settings/dropdown-options-page.tsx", "(protected)/settings/dropdowns.tsx", "DropdownOptionsPage");
mergePage("settings/task-templates-page.tsx", "(protected)/settings/task-templates.tsx", "TaskTemplatesPage");
mergePage(
"settings/dropdown-options-page.tsx",
"(protected)/settings/dropdowns.tsx",
"DropdownOptionsPage",
);
mergePage(
"settings/task-templates-page.tsx",
"(protected)/settings/task-templates.tsx",
"TaskTemplatesPage",
);
mergePage("dashboard/dashboard-page.tsx", "(protected)/index.tsx", "DashboardPage");
mergePage("dashboard/dashboard-page.tsx", "(protected)/dashboard.tsx", "DashboardPage");
@ -176,8 +244,16 @@ mergePage("dashboard/dashboard-page.tsx", "(protected)/dashboard.tsx", "Dashboar
mergePage("login/login-page.tsx", "(auth)/login.tsx", "LoginPage");
// --- workorders ---
mergePage("work-orders/work-orders-list-page.tsx", "(protected)/workorders/index.tsx", "WorkOrdersListPage");
mergePage("work-orders/work-order-form-page.tsx", "(protected)/workorders/_components/work-order-form.tsx", "WorkOrderFormPage");
mergePage(
"work-orders/work-orders-list-page.tsx",
"(protected)/workorders/index.tsx",
"WorkOrdersListPage",
);
mergePage(
"work-orders/work-order-form-page.tsx",
"(protected)/workorders/_components/work-order-form.tsx",
"WorkOrderFormPage",
);
writeReExport("(protected)/workorders/new.tsx", "./_components/work-order-form");
writeReExport("(protected)/workorders/edit/[id].tsx", "./_components/work-order-form");
mergePage(
@ -211,7 +287,10 @@ fs.copyFileSync(
let vpLayout = read(path.join(app, "vendor-portal/vendor-portal-layout.tsx"));
vpLayout = vpLayout
.replace("@/app/vendor-portal/vendor-portal-provider", "@/app/v/_components/vendor-portal-provider")
.replace(
"@/app/vendor-portal/vendor-portal-provider",
"@/app/v/_components/vendor-portal-provider",
)
.replace("@/app/vendor-portal/vendor-portal.css", "@/app/v/_components/vendor-portal.css")
.replace("export function VendorPortalLayout", "export default function VendorPortalLayout");
write(path.join(app, "v", "[token]", "_layout.tsx"), vpLayout);
@ -222,12 +301,9 @@ mergePage(
"VendorPortalDashboardPage",
[["@/app/vendor-portal/vendor-portal-provider", "@/app/v/_components/vendor-portal-provider"]],
);
mergePage(
"vendor-portal/vendor-portal-pos-page.tsx",
"v/[token]/pos.tsx",
"VendorPortalPosPage",
[["@/app/vendor-portal/vendor-portal-provider", "@/app/v/_components/vendor-portal-provider"]],
);
mergePage("vendor-portal/vendor-portal-pos-page.tsx", "v/[token]/pos.tsx", "VendorPortalPosPage", [
["@/app/vendor-portal/vendor-portal-provider", "@/app/v/_components/vendor-portal-provider"],
]);
mergePage(
"vendor-portal/vendor-portal-dispatch-page.tsx",
"v/[token]/dispatch/[id].tsx",