mirror of
https://github.com/SigNoz/signoz.git
synced 2025-12-21 17:36:37 +00:00
83 lines
2.4 KiB
TypeScript
83 lines
2.4 KiB
TypeScript
|
|
import { expect, Page, test } from '@playwright/test';
|
||
|
|
import ROUTES from 'constants/routes';
|
||
|
|
|
||
|
|
import servicesSuccessResponse from '../fixtures/api/services/200.json';
|
||
|
|
import { loginApi } from '../fixtures/common';
|
||
|
|
|
||
|
|
let page: Page;
|
||
|
|
|
||
|
|
test.describe('Service Page', () => {
|
||
|
|
test.beforeEach(async ({ baseURL, browser }) => {
|
||
|
|
const context = await browser.newContext({ storageState: 'tests/auth.json' });
|
||
|
|
const newPage = await context.newPage();
|
||
|
|
|
||
|
|
await loginApi(newPage);
|
||
|
|
|
||
|
|
await newPage.goto(`${baseURL}${ROUTES.APPLICATION}`);
|
||
|
|
|
||
|
|
page = newPage;
|
||
|
|
});
|
||
|
|
|
||
|
|
test('Services Empty Page', async ({ baseURL }) => {
|
||
|
|
// visit services page
|
||
|
|
await page.goto(`${baseURL}${ROUTES.APPLICATION}`);
|
||
|
|
|
||
|
|
await page.route(`**/services`, (route) =>
|
||
|
|
route.fulfill({
|
||
|
|
status: 200,
|
||
|
|
json: [],
|
||
|
|
}),
|
||
|
|
);
|
||
|
|
|
||
|
|
// expect noData to be present
|
||
|
|
await expect(page.getByText('No data')).toBeVisible();
|
||
|
|
});
|
||
|
|
|
||
|
|
test('Services Table Rendered with correct data', async ({ baseURL }) => {
|
||
|
|
// visit services page
|
||
|
|
await page.goto(`${baseURL}${ROUTES.APPLICATION}`);
|
||
|
|
|
||
|
|
// assert the URL of the services page
|
||
|
|
await expect(page).toHaveURL(`${baseURL}${ROUTES.APPLICATION}`);
|
||
|
|
|
||
|
|
await page.route(`**/services`, (route) =>
|
||
|
|
route.fulfill({
|
||
|
|
status: 200,
|
||
|
|
json: servicesSuccessResponse,
|
||
|
|
}),
|
||
|
|
);
|
||
|
|
|
||
|
|
// assert the presence of services breadcrumbs
|
||
|
|
const breadcrumbServicesText = await page
|
||
|
|
.locator('.ant-breadcrumb-link a[href="/services"]')
|
||
|
|
.nth(1)
|
||
|
|
.textContent();
|
||
|
|
await expect(breadcrumbServicesText).toEqual('Services');
|
||
|
|
|
||
|
|
// expect the services headers to be loaded correctly
|
||
|
|
const p99Latency = await page
|
||
|
|
.locator(
|
||
|
|
`th[aria-label*="this column's title is P99 latency (in ms)"] .ant-table-column-title`,
|
||
|
|
)
|
||
|
|
.textContent();
|
||
|
|
|
||
|
|
await expect(p99Latency).toEqual('P99 latency (in ms)');
|
||
|
|
const errorRate = await page
|
||
|
|
.locator(
|
||
|
|
`th[aria-label*="this column's title is Error Rate (% of total)"] .ant-table-column-title`,
|
||
|
|
)
|
||
|
|
.textContent();
|
||
|
|
|
||
|
|
await expect(errorRate).toEqual('Error Rate (% of total)');
|
||
|
|
const operationsPerSecond = await page
|
||
|
|
.locator(
|
||
|
|
`th[aria-label="this column's title is Operations Per Second,this column is sortable"] .ant-table-column-title`,
|
||
|
|
)
|
||
|
|
.textContent();
|
||
|
|
|
||
|
|
await expect(operationsPerSecond).toEqual('Operations Per Second');
|
||
|
|
// expect services to be listed in the table
|
||
|
|
await page.locator('a[href="/services/redis"]').isVisible();
|
||
|
|
});
|
||
|
|
});
|