logs-analyzer/signoz/frontend/tests/traces/newTracesExplorer.spec.ts
2024-09-02 22:47:30 +03:00

119 lines
3.0 KiB
TypeScript

import { Page, test, expect } from '@playwright/test';
import { loginApi } from '../fixtures/common';
import ROUTES from 'constants/routes';
import queryRangeSuccessResponse from '../fixtures/api/traces/queryRange200.json';
import tracesSuccessResponse from '../fixtures/api/traces/tracesRange200.json';
import tracesTableSuccessResponse from '../fixtures/api/traces/tracesTableView200.json';
import {
defaultAttributeKeysData,
httpMethodAttributeID,
newExplorerCtaID,
queryRangeApiEndpoint,
saveNewViewID,
saveNewViewWithNameID,
serviceAttributeID,
tableViewTabID,
traceExplorerViewsGetEndpoint,
traceExplorerViewsPostEndpoint,
traceRowTraceTabID,
traceTabID,
tracesExplorerQueryData,
tracesExplorerViewsData,
tracesExplorerViewsPostData,
} from './utils';
let page: Page;
test.describe('New Traces Explorer', () => {
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('Traces Explorer Tests', async ({}) => {
await page.locator(`li[data-menu-id*="/trace"]`).click();
await tracesExplorerQueryData(page, queryRangeSuccessResponse);
await defaultAttributeKeysData(page);
const queryRangeRequest = page.waitForRequest(`**/${queryRangeApiEndpoint}`);
await page.locator(`data-testid=${newExplorerCtaID}`).click();
await queryRangeRequest;
await page.getByText('List View').click();
const serviceName = await page
.locator(`data-testid=${serviceAttributeID}`)
.textContent();
expect(serviceName).toBe('route');
const httpMethod = await page
.locator(`data-testid=${httpMethodAttributeID}`)
.textContent();
expect(httpMethod).toBe('GET');
await tracesExplorerQueryData(page, tracesSuccessResponse);
await page.locator(`id=${traceTabID}`).click();
const traceID = await page
.locator(`data-testid=${traceRowTraceTabID}`)
.textContent();
expect(traceID).toBe(
tracesSuccessResponse.data.result[0].list[0].data.traceID,
);
await tracesExplorerQueryData(page, tracesTableSuccessResponse);
await page.locator(`id=${tableViewTabID}`).click();
await page.waitForLoadState('networkidle');
const count = await page.getByText('85784').isVisible();
await expect(count).toBeTruthy();
await page.locator(`data-testid=${saveNewViewID}`).click();
await page.locator('id=viewName').type('Playwright');
await tracesExplorerQueryData(page, queryRangeSuccessResponse);
await tracesExplorerViewsData(page);
await tracesExplorerViewsPostData(page);
const viewsSaveRequest = page.waitForRequest(
`**/${traceExplorerViewsPostEndpoint}`,
);
const viewsGetRequest = page.waitForRequest(
`**/${traceExplorerViewsGetEndpoint}`,
);
await page.locator(`data-testid=${saveNewViewWithNameID}`).click();
await viewsSaveRequest;
await viewsGetRequest;
const viewName = await page.getByText('Playwright').isVisible();
await expect(viewName).toBeTruthy();
});
});