buster/apps/web/playwright-tests/smoketest-pages.test.ts

208 lines
6.0 KiB
TypeScript
Raw Permalink Normal View History

Biome linter test (#336) * update files for use with biom * fix prettier formats * minor biome fixes * fix additional files * update linting rules * fix additional linting errors * fix linting errors * update lib * run check in the lib direcotyr * update some linting errors * fix problems * move addtional files to stricter linting * fix imports and linting errors * update some biome settings * fix query parser * quick wins * update files * fix addtional things * fix context files * update additional biome files * fix additional files * biome fixes * fixin files * fix broken * fix additional files and problems * fix biome buster stuff * fix helpers and * stricter linting * fixed * fix missing types * fix linting * remove missing imports * update more biome test stuff * update fixes * update imports * more updates * fix some linting errors * fix broken children as prop errors * lint ci * update lint check * Update package.json * Update next.config.mjs * fix some broken tests * update some tests * chore(versions): bump api to v0.1.16; bump web to v0.1.16; bump cli to v0.1.16 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update web-unit-tests.yml * fix some tests * chore(versions): bump api to v0.1.17; bump web to v0.1.17; bump cli to v0.1.17 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * update ignore files * chore(versions): bump api to v0.1.18; bump web to v0.1.18; bump cli to v0.1.18 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update web-lint.yml * chore(versions): bump api to v0.1.19; bump web to v0.1.19; bump cli to v0.1.19 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * update boime package settings * chore(versions): bump api to v0.1.20; bump web to v0.1.20; bump cli to v0.1.20 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * save to dropdown bug fixes * update console logs * update chart animation * chore(versions): bump api to v0.1.21; bump web to v0.1.21; bump cli to v0.1.21 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * update build * chore(versions): bump api to v0.1.22; bump web to v0.1.22; bump cli to v0.1.22 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * additinal updates for biome 2 * update imports * chore(versions): bump api to v0.1.23; bump web to v0.1.23; bump cli to v0.1.23 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * final updates * chore(versions): bump api to v0.1.24; bump web to v0.1.24; bump cli to v0.1.24 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update dashboard-updates.test.ts * chore(versions): bump api to v0.1.25; bump web to v0.1.25; bump cli to v0.1.25 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * crazy fix * chore(versions): bump api to v0.1.26; bump web to v0.1.26; bump cli to v0.1.26 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * more attempts for stable tests * chore(versions): bump api to v0.1.27; bump web to v0.1.27; bump cli to v0.1.27 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * update tests * split the test off * chore(versions): bump api to v0.1.28; bump web to v0.1.28; bump cli to v0.1.28 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update pie-styling-updates.spec.ts * Create web-e2e-tests-optimized.yml * chore(versions): bump api to v0.1.29; bump web to v0.1.29; bump cli to v0.1.29 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * update tests * chore(versions): bump api to v0.1.30; bump web to v0.1.30; bump cli to v0.1.30 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update web-e2e-tests-optimized.yml * chore(versions): bump api to v0.1.31; bump web to v0.1.31; bump cli to v0.1.31 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update web-e2e-tests-optimized.yml * chore(versions): bump api to v0.1.32; bump web to v0.1.32; bump cli to v0.1.32 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update web-e2e-tests-optimized.yml * chore(versions): bump api to v0.1.33; bump web to v0.1.33; bump cli to v0.1.33 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update web-e2e-tests-optimized.yml * chore(versions): bump api to v0.1.34; bump web to v0.1.34; bump cli to v0.1.34 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update web-e2e-tests-optimized.yml * Update web-e2e-tests-optimized.yml * Revert "Update web-e2e-tests-optimized.yml" This reverts commit dfc9263a2621f1c00dee30e28dbb01a9f8f914ef. * Update web-e2e-tests-optimized.yml * chore(versions): bump api to v0.1.35; bump web to v0.1.35; bump cli to v0.1.35 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] * Update web-e2e-tests-optimized.yml * chore(versions): bump api to v0.1.36; bump web to v0.1.36; bump cli to v0.1.36 [skip ci] * chore: update tag_info.json with potential release versions [skip ci] --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-31 01:16:48 +08:00
import { expect, test } from '@playwright/test';
import { BusterRoutes, createBusterRoute } from '@/routes';
// Define routes
const homePage = createBusterRoute({
route: BusterRoutes.APP_HOME
});
const loginPage = createBusterRoute({
route: BusterRoutes.AUTH_LOGIN
});
test.describe('Authentication Flow', () => {
test('should redirect when cookies are cleared', async ({ page, context }) => {
// First visit home page
await page.goto(homePage);
await expect(page).toHaveURL(homePage);
// Clear cookies to remove authentication
await context.clearCookies();
// Try to access the protected home page again
await page.goto(homePage);
await page.waitForTimeout(25);
// Should be redirected away from the protected route
await expect(page).not.toHaveURL(homePage);
await expect(page).toHaveURL(loginPage);
});
test('go to home page', async ({ page }) => {
await page.goto(homePage);
//for 100 milliseconds
await page.waitForTimeout(10);
await expect(page).toHaveURL(homePage);
});
});
test.describe('Asset Route Redirects', () => {
// Routes that need testing from assetRedirectRecord
const routesToTest = {
metricChart: createBusterRoute({
route: BusterRoutes.APP_METRIC_ID_CHART,
metricId: 'test-metric-id'
}),
metricResults: createBusterRoute({
route: BusterRoutes.APP_METRIC_ID_RESULTS,
metricId: 'test-metric-id'
}),
dashboard: createBusterRoute({
route: BusterRoutes.APP_DASHBOARD_ID,
dashboardId: 'test-dashboard-id'
}),
dashboardFile: createBusterRoute({
route: BusterRoutes.APP_DASHBOARD_ID_FILE,
dashboardId: 'test-dashboard-id'
}),
chat: createBusterRoute({
route: BusterRoutes.APP_CHAT
}),
chatId: createBusterRoute({
route: BusterRoutes.APP_CHAT_ID,
chatId: 'test-chat-id'
}),
chatMetric: createBusterRoute({
route: BusterRoutes.APP_CHAT_ID_METRIC_ID,
chatId: 'test-chat-id',
metricId: 'test-metric-id'
}),
chatMetricChart: createBusterRoute({
route: BusterRoutes.APP_CHAT_ID_METRIC_ID_CHART,
chatId: 'test-chat-id',
metricId: 'test-metric-id'
}),
chatMetricResults: createBusterRoute({
route: BusterRoutes.APP_CHAT_ID_METRIC_ID_RESULTS,
chatId: 'test-chat-id',
metricId: 'test-metric-id'
}),
2025-07-04 07:14:52 +08:00
chatDashboard: createBusterRoute({
route: BusterRoutes.APP_CHAT_ID_DASHBOARD_ID,
chatId: 'test-chat-id',
dashboardId: 'test-dashboard-id'
}),
chatDashboardFile: createBusterRoute({
route: BusterRoutes.APP_CHAT_ID_DASHBOARD_ID_FILE,
chatId: 'test-chat-id',
dashboardId: 'test-dashboard-id'
})
};
for (const [routeName, routeUrl] of Object.entries(routesToTest)) {
test(`should redirect from ${routeName} when not authenticated`, async ({ page, context }) => {
// First visit home page
await page.goto(homePage);
await expect(page).toHaveURL(homePage);
// Clear cookies to remove authentication
await context.clearCookies();
// Try to access the protected route
await page.goto(routeUrl);
// Should be redirected away from the protected route
await expect(page).not.toHaveURL(routeUrl);
});
}
});
test.describe('Public Pages - No Redirect', () => {
// Routes that should be accessible without authentication
const publicRoutes = {
login: createBusterRoute({
route: BusterRoutes.AUTH_LOGIN
}),
resetPassword: createBusterRoute({
route: BusterRoutes.AUTH_RESET_PASSWORD
}),
resetPasswordEmail: createBusterRoute({
route: BusterRoutes.AUTH_RESET_PASSWORD_EMAIL
}),
confirmEmail: createBusterRoute({
route: BusterRoutes.AUTH_CONFIRM_EMAIL
}),
// Add embed routes
embedMetric: createBusterRoute({
route: BusterRoutes.EMBED_METRIC_ID,
metricId: 'test-metric-id'
}),
embedDashboard: createBusterRoute({
route: BusterRoutes.EMBED_DASHBOARD_ID,
dashboardId: 'test-dashboard-id'
})
};
for (const [routeName, routeUrl] of Object.entries(publicRoutes)) {
test(`should not redirect from public route ${routeName} when not authenticated`, async ({
page,
context
}) => {
// Clear cookies to ensure user is not authenticated
await context.clearCookies();
// Try to access the public route
await page.goto(routeUrl);
// Should NOT be redirected away from the public route
await expect(page).toHaveURL(routeUrl);
});
}
});
test.describe('Authenticated Page', () => {
//this is just a smoke tests for now
const authenticatedPages = {
home: createBusterRoute({
route: BusterRoutes.APP_HOME
}),
metricList: createBusterRoute({
route: BusterRoutes.APP_METRIC
}),
dashboardList: createBusterRoute({
route: BusterRoutes.APP_DASHBOARDS
}),
chat: createBusterRoute({
route: BusterRoutes.APP_CHAT
}),
chatId: createBusterRoute({
route: BusterRoutes.APP_CHAT_ID,
chatId: 'test-chat-id'
}),
chatIdMetricId: createBusterRoute({
route: BusterRoutes.APP_CHAT_ID_METRIC_ID,
chatId: 'test-chat-id',
metricId: 'test-metric-id'
}),
chatIdDashboardId: createBusterRoute({
route: BusterRoutes.APP_CHAT_ID_DASHBOARD_ID,
chatId: 'test-chat-id',
dashboardId: 'test-dashboard-id'
}),
settings: createBusterRoute({
route: BusterRoutes.SETTINGS_PROFILE
}),
settingsGeneral: createBusterRoute({
route: BusterRoutes.SETTINGS_API_KEYS
})
};
//make sure we are chad
test('make sure we are chad', async ({ page }) => {
await page.goto(homePage);
//assert the chad@buster.so is found on the page somewhere
await expect(page.locator('html')).toContainText('chad@buster.so');
});
for (const [routeName, routeUrl] of Object.entries(authenticatedPages)) {
test(`should redirect from ${routeName} when not authenticated`, async ({ page, context }) => {
await page.goto(routeUrl);
await expect(page).toHaveURL(routeUrl);
});
}
});