102 lines
2.9 KiB
TypeScript
102 lines
2.9 KiB
TypeScript
|
import { expect, Page, test } from '@playwright/test';
|
||
|
import ROUTES from 'constants/routes';
|
||
|
|
||
|
import allErrorList from '../fixtures/api/allErrors/200.json';
|
||
|
import errorDetailSuccess from '../fixtures/api/errorDetails/200.json';
|
||
|
import errorDetailNotFound from '../fixtures/api/errorDetails/404.json';
|
||
|
import nextPreviousSuccess from '../fixtures/api/getNextPrev/200.json';
|
||
|
import { loginApi } from '../fixtures/common';
|
||
|
import { JsonApplicationType } from '../fixtures/constant';
|
||
|
|
||
|
let page: Page;
|
||
|
const timestamp = '1657794588955274000';
|
||
|
|
||
|
test.describe('Expections Details', async () => {
|
||
|
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('Should have not found when api return 404', async () => {
|
||
|
await Promise.all([
|
||
|
page.route('**/errorFromGroupID**', (route) =>
|
||
|
route.fulfill({
|
||
|
status: 404,
|
||
|
contentType: JsonApplicationType,
|
||
|
body: JSON.stringify(errorDetailNotFound),
|
||
|
}),
|
||
|
),
|
||
|
page.route('**/nextPrevErrorIDs**', (route) =>
|
||
|
route.fulfill({
|
||
|
status: 404,
|
||
|
contentType: JsonApplicationType,
|
||
|
body: JSON.stringify([]),
|
||
|
}),
|
||
|
),
|
||
|
]);
|
||
|
|
||
|
await page.goto(
|
||
|
`${ROUTES.ERROR_DETAIL}?groupId=${allErrorList[0].groupID}×tamp=${timestamp}`,
|
||
|
{
|
||
|
waitUntil: 'networkidle',
|
||
|
},
|
||
|
);
|
||
|
|
||
|
const NoDataLocator = page.locator('text=Not Found');
|
||
|
const isVisible = await NoDataLocator.isVisible();
|
||
|
const text = await NoDataLocator.textContent();
|
||
|
|
||
|
expect(isVisible).toBe(true);
|
||
|
expect(text).toBe('Not Found');
|
||
|
expect(await page.screenshot()).toMatchSnapshot();
|
||
|
});
|
||
|
|
||
|
test('Render Success Data when 200 from details page', async () => {
|
||
|
await Promise.all([
|
||
|
page.route('**/errorFromGroupID**', (route) =>
|
||
|
route.fulfill({
|
||
|
status: 200,
|
||
|
contentType: JsonApplicationType,
|
||
|
body: JSON.stringify(errorDetailSuccess),
|
||
|
}),
|
||
|
),
|
||
|
page.route('**/nextPrevErrorIDs**', (route) =>
|
||
|
route.fulfill({
|
||
|
status: 200,
|
||
|
contentType: JsonApplicationType,
|
||
|
body: JSON.stringify(nextPreviousSuccess),
|
||
|
}),
|
||
|
),
|
||
|
]);
|
||
|
|
||
|
await page.goto(
|
||
|
`${ROUTES.ERROR_DETAIL}?groupId=${allErrorList[0].groupID}×tamp=${timestamp}`,
|
||
|
{
|
||
|
waitUntil: 'networkidle',
|
||
|
},
|
||
|
);
|
||
|
|
||
|
const traceDetailButton = page.locator('text=See the error in trace graph');
|
||
|
const olderButton = page.locator('text=Older');
|
||
|
const newerButton = page.locator(`text=Newer`);
|
||
|
|
||
|
expect(await traceDetailButton.isVisible()).toBe(true);
|
||
|
expect(await olderButton.isVisible()).toBe(true);
|
||
|
expect(await newerButton.isVisible()).toBe(true);
|
||
|
|
||
|
expect(await traceDetailButton.textContent()).toBe(
|
||
|
'See the error in trace graph',
|
||
|
);
|
||
|
expect(await olderButton.textContent()).toBe('Older');
|
||
|
expect(await newerButton.textContent()).toBe('Newer');
|
||
|
|
||
|
expect(await page.screenshot()).toMatchSnapshot();
|
||
|
});
|
||
|
});
|