notebooks/components/crud-web-apps/jupyter/frontend/tests/support/commands.ts

109 lines
3.3 KiB
TypeScript

import { Page, Route, Request as PlaywrightRequest } from '@playwright/test';
import config from '../fixtures/config.json' assert { type: 'json' };
import namespaces from '../fixtures/namespaces.json' assert { type: 'json' };
import notebooks from '../fixtures/notebooks.json' assert { type: 'json' };
import poddefaults from '../fixtures/poddefaults.json' assert { type: 'json' };
export async function selectAllNamespaces(page: Page) {
console.log('Selecting all namespaces from the dropdown');
// Click and select 'All namespaces' option
await page.click('[data-cy-namespace-selector-dropdown]');
await page.click('[data-cy-all-namespaces]');
}
export async function mockDashboardRequest(page: Page) {
await page.route('/dashboard_lib.bundle.js', async (route: Route, request: PlaywrightRequest) => {
if (request.method() === 'GET') {
await route.fulfill({ body: JSON.stringify([]) });
}
});
}
export async function mockNamespacesRequest(page: Page) {
await page.route('/api/namespaces', async (route: Route, request: PlaywrightRequest) => {
if (request.method() === 'GET') {
await route.fulfill({ json: namespaces });
}
});
}
export async function mockNotebooksRequest(page: Page, namespace: string) {
await page.route(`/api/namespaces/${namespace}/notebooks`, async (route: Route, request: PlaywrightRequest) => {
if (request.method() === 'GET') {
await route.fulfill({ json: notebooks });
}
});
}
export async function mockNotebooksAllNamespacesRequest(page: Page, settingsNamespace: string) {
for (const namespace of namespaces.namespaces) {
if (namespace === settingsNamespace) {
continue;
}
await page.route(`/api/namespaces/${namespace}/notebooks`, async (route: Route, request: PlaywrightRequest) => {
if (request.method() === 'GET') {
await route.fulfill({ json: { notebooks: [] } });
}
});
}
}
export async function mockStorageClassesRequests(page: Page) {
await page.route('/api/storageclasses', async (route: Route, request: PlaywrightRequest) => {
if (request.method() === 'GET') {
await route.fulfill({ json: { storageClasses: ['standard'] } });
}
});
}
export async function mockDefaultStorageClassRequest(page: Page, defaultStorageClass: string) {
await page.route('/api/storageclasses/default', async (route: Route, request: PlaywrightRequest) => {
if (request.method() === 'GET') {
await route.fulfill({ json: { defaultStorageClass } });
}
});
}
export async function mockGpusRequest(page: Page) {
await page.route('/api/gpus', async (route: Route, request: PlaywrightRequest) => {
if (request.method() === 'GET') {
await route.fulfill({
json: {
status: 200,
success: true,
user: null,
vendors: [],
},
});
}
});
}
export async function mockConfigRequest(page: Page) {
await page.route('/api/config', async (route: Route, request: PlaywrightRequest) => {
if (request.method() === 'GET') {
await route.fulfill({ json: config });
}
});
}
export async function mockPoddefaultsRequest(page: Page, namespace: string) {
await page.route(`/api/namespaces/${namespace}/poddefaults`, async (route: Route, request: PlaywrightRequest) => {
if (request.method() === 'GET') {
await route.fulfill({ json: poddefaults });
}
});
}