mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-07 03:32:06 +00:00
fix(ci): fix login e2e session mock and prettier formatting
This commit is contained in:
parent
c7787bda98
commit
3b39b858c1
2 changed files with 123 additions and 32 deletions
|
|
@ -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",
|
||||||
|
|
|
||||||
|
|
@ -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",
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue