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", name: "Test User",
}; };
async function mockUnauthenticatedSession(page: Page) { async function mockSession(page: Page, isAuthenticated: () => boolean = () => false) {
await page.route("**/api/Authentication/GetCurrentUser", async (route) => { 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({ await route.fulfill({
status: 401, status: 401,
contentType: "application/json", contentType: "application/json",
@ -35,7 +44,7 @@ async function mockDashboardStats(page: Page) {
test.describe("Login page", () => { test.describe("Login page", () => {
test.beforeEach(async ({ page }) => { test.beforeEach(async ({ page }) => {
await mockUnauthenticatedSession(page); await mockSession(page);
await mockDashboardStats(page); await mockDashboardStats(page);
}); });
@ -77,7 +86,13 @@ test.describe("Login page", () => {
}); });
test("logs in successfully and navigates to dashboard", async ({ 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) => { await page.route("**/api/Authentication/Login", async (route) => {
authenticated = true;
await route.fulfill({ await route.fulfill({
status: 200, status: 200,
contentType: "application/json", contentType: "application/json",

View file

@ -32,9 +32,7 @@ function toDefaultExport(content, exportName) {
`export default function ${exportName}`, `export default function ${exportName}`,
); );
} }
return result return result.replace(/^export \{ ([A-Za-z]+) as default \} from .+;\s*$/m, "").trimEnd() + "\n";
.replace(/^export \{ ([A-Za-z]+) as default \} from .+;\s*$/m, "")
.trimEnd() + "\n";
} }
function copyRoutesTree() { function copyRoutesTree() {
@ -58,7 +56,13 @@ function updateProtectedLayout() {
write(layoutPath, content); 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); const source = path.join(app, sourceRel);
if (!fs.existsSync(source)) { if (!fs.existsSync(source)) {
console.warn("Missing source:", sourceRel); 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"))); write(path.join(src, "app-root.tsx"), read(path.join(app, "app-root.tsx")));
let main = read(path.join(src, "main.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); write(path.join(src, "main.tsx"), main);
let vite = read(path.join(root, "vite.config.ts")); let vite = read(path.join(root, "vite.config.ts"));
@ -106,29 +110,57 @@ updateProtectedLayout();
// --- accounts pilot --- // --- accounts pilot ---
mergePage("accounts/accounts-list-page.tsx", "(protected)/accounts/index.tsx", "AccountsListPage"); 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/new.tsx", "./_components/account-form");
writeReExport("(protected)/accounts/edit/[id].tsx", "./_components/account-form"); writeReExport("(protected)/accounts/edit/[id].tsx", "./_components/account-form");
// --- contacts, employees, locations --- // --- contacts, employees, locations ---
mergePage("contacts/contacts-list-page.tsx", "(protected)/contacts/index.tsx", "ContactsListPage"); 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/new.tsx", "./_components/contact-form");
writeReExport("(protected)/contacts/edit/[id].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(
mergePage("employees/employee-form-page.tsx", "(protected)/employees/_components/employee-form.tsx", "EmployeeFormPage"); "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/new.tsx", "./_components/employee-form");
writeReExport("(protected)/employees/edit/[id].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(
mergePage("locations/location-form-page.tsx", "(protected)/locations/_components/location-form.tsx", "LocationFormPage"); "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/new.tsx", "./_components/location-form");
writeReExport("(protected)/locations/edit/[id].tsx", "./_components/location-form"); writeReExport("(protected)/locations/edit/[id].tsx", "./_components/location-form");
// --- assets, vendors, followups, pmschedules --- // --- assets, vendors, followups, pmschedules ---
mergePage("assets/assets-list-page.tsx", "(protected)/assets/index.tsx", "AssetsListPage"); 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/new.tsx", "./_components/asset-form");
writeReExport("(protected)/assets/edit/[id].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/new.tsx", "./_components/vendor-form");
writeReExport("(protected)/vendors/edit/[id].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(
mergePage("follow-ups/follow-up-form-page.tsx", "(protected)/followups/_components/follow-up-form.tsx", "FollowUpFormPage"); "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/new.tsx", "./_components/follow-up-form");
writeReExport("(protected)/followups/edit/[id].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(
mergePage("pm-schedules/pm-schedule-form-page.tsx", "(protected)/pmschedules/_components/pm-schedule-form.tsx", "PmScheduleFormPage"); "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/new.tsx", "./_components/pm-schedule-form");
writeReExport("(protected)/pmschedules/edit/[id].tsx", "./_components/pm-schedule-form"); writeReExport("(protected)/pmschedules/edit/[id].tsx", "./_components/pm-schedule-form");
// --- calendar, uplifts, vendor-pos, settings, dashboard, login --- // --- calendar, uplifts, vendor-pos, settings, dashboard, login ---
mergePage("calendar/calendar-page.tsx", "(protected)/calendar/index.tsx", "CalendarPage"); 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/new.tsx", "./_components/event-form");
writeReExport("(protected)/calendar/edit/[id].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("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(
mergePage("vendor-pos/vendor-po-view-page.tsx", "(protected)/vendor-pos/[id].tsx", "VendorPoViewPage"); "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(
mergePage("settings/task-templates-page.tsx", "(protected)/settings/task-templates.tsx", "TaskTemplatesPage"); "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)/index.tsx", "DashboardPage");
mergePage("dashboard/dashboard-page.tsx", "(protected)/dashboard.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"); mergePage("login/login-page.tsx", "(auth)/login.tsx", "LoginPage");
// --- workorders --- // --- workorders ---
mergePage("work-orders/work-orders-list-page.tsx", "(protected)/workorders/index.tsx", "WorkOrdersListPage"); mergePage(
mergePage("work-orders/work-order-form-page.tsx", "(protected)/workorders/_components/work-order-form.tsx", "WorkOrderFormPage"); "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/new.tsx", "./_components/work-order-form");
writeReExport("(protected)/workorders/edit/[id].tsx", "./_components/work-order-form"); writeReExport("(protected)/workorders/edit/[id].tsx", "./_components/work-order-form");
mergePage( mergePage(
@ -211,7 +287,10 @@ fs.copyFileSync(
let vpLayout = read(path.join(app, "vendor-portal/vendor-portal-layout.tsx")); let vpLayout = read(path.join(app, "vendor-portal/vendor-portal-layout.tsx"));
vpLayout = vpLayout 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("@/app/vendor-portal/vendor-portal.css", "@/app/v/_components/vendor-portal.css")
.replace("export function VendorPortalLayout", "export default function VendorPortalLayout"); .replace("export function VendorPortalLayout", "export default function VendorPortalLayout");
write(path.join(app, "v", "[token]", "_layout.tsx"), vpLayout); write(path.join(app, "v", "[token]", "_layout.tsx"), vpLayout);
@ -222,12 +301,9 @@ mergePage(
"VendorPortalDashboardPage", "VendorPortalDashboardPage",
[["@/app/vendor-portal/vendor-portal-provider", "@/app/v/_components/vendor-portal-provider"]], [["@/app/vendor-portal/vendor-portal-provider", "@/app/v/_components/vendor-portal-provider"]],
); );
mergePage( mergePage("vendor-portal/vendor-portal-pos-page.tsx", "v/[token]/pos.tsx", "VendorPortalPosPage", [
"vendor-portal/vendor-portal-pos-page.tsx", ["@/app/vendor-portal/vendor-portal-provider", "@/app/v/_components/vendor-portal-provider"],
"v/[token]/pos.tsx", ]);
"VendorPortalPosPage",
[["@/app/vendor-portal/vendor-portal-provider", "@/app/v/_components/vendor-portal-provider"]],
);
mergePage( mergePage(
"vendor-portal/vendor-portal-dispatch-page.tsx", "vendor-portal/vendor-portal-dispatch-page.tsx",
"v/[token]/dispatch/[id].tsx", "v/[token]/dispatch/[id].tsx",