added test
Signed-off-by: René <snooz@posteo.de>
This commit is contained in:
parent
6f45a0d0a9
commit
1894e28348
|
|
@ -36,6 +36,7 @@ export type TraceViewerFixtures = {
|
||||||
|
|
||||||
class TraceViewerPage {
|
class TraceViewerPage {
|
||||||
actionTitles: Locator;
|
actionTitles: Locator;
|
||||||
|
actionsTree: Locator;
|
||||||
callLines: Locator;
|
callLines: Locator;
|
||||||
consoleLines: Locator;
|
consoleLines: Locator;
|
||||||
logLines: Locator;
|
logLines: Locator;
|
||||||
|
|
@ -46,9 +47,11 @@ class TraceViewerPage {
|
||||||
networkRequests: Locator;
|
networkRequests: Locator;
|
||||||
metadataTab: Locator;
|
metadataTab: Locator;
|
||||||
snapshotContainer: Locator;
|
snapshotContainer: Locator;
|
||||||
|
sourceCodeTab: Locator;
|
||||||
|
|
||||||
constructor(public page: Page) {
|
constructor(public page: Page) {
|
||||||
this.actionTitles = page.locator('.action-title');
|
this.actionTitles = page.locator('.action-title');
|
||||||
|
this.actionsTree = page.getByTestId('actions-tree');
|
||||||
this.callLines = page.locator('.call-tab .call-line');
|
this.callLines = page.locator('.call-tab .call-line');
|
||||||
this.logLines = page.getByTestId('log-list').locator('.list-view-entry');
|
this.logLines = page.getByTestId('log-list').locator('.list-view-entry');
|
||||||
this.consoleLines = page.locator('.console-line');
|
this.consoleLines = page.locator('.console-line');
|
||||||
|
|
@ -59,6 +62,7 @@ class TraceViewerPage {
|
||||||
this.networkRequests = page.getByTestId('network-list').locator('.list-view-entry');
|
this.networkRequests = page.getByTestId('network-list').locator('.list-view-entry');
|
||||||
this.snapshotContainer = page.locator('.snapshot-container iframe.snapshot-visible[name=snapshot]');
|
this.snapshotContainer = page.locator('.snapshot-container iframe.snapshot-visible[name=snapshot]');
|
||||||
this.metadataTab = page.getByTestId('metadata-view');
|
this.metadataTab = page.getByTestId('metadata-view');
|
||||||
|
this.sourceCodeTab = page.getByTestId('source-code');
|
||||||
}
|
}
|
||||||
|
|
||||||
async actionIconsText(action: string) {
|
async actionIconsText(action: string) {
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,15 @@ test.beforeAll(async function recordTrace({ browser, browserName, browserType, s
|
||||||
}
|
}
|
||||||
await doClick();
|
await doClick();
|
||||||
|
|
||||||
|
await context.tracing.group('High-level Group');
|
||||||
|
await context.tracing.group('First Mid-level Group', { location: { file: `${__dirname}/tracing.spec.ts`, line: 100, column: 10 } });
|
||||||
|
await page.locator('button >> nth=0').click();
|
||||||
|
await context.tracing.groupEnd();
|
||||||
|
await context.tracing.group('Second Mid-level Group', { location: { file: __filename } });
|
||||||
|
await expect(page.getByText('Click')).toBeVisible();
|
||||||
|
await context.tracing.groupEnd();
|
||||||
|
await context.tracing.groupEnd();
|
||||||
|
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
page.waitForNavigation(),
|
page.waitForNavigation(),
|
||||||
page.waitForResponse(server.PREFIX + '/frames/frame.html'),
|
page.waitForResponse(server.PREFIX + '/frames/frame.html'),
|
||||||
|
|
@ -102,6 +111,67 @@ test('should open trace viewer on specific host', async ({ showTraceViewer }, te
|
||||||
await expect(traceViewer.page).toHaveURL(/127.0.0.1/);
|
await expect(traceViewer.page).toHaveURL(/127.0.0.1/);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('should show groups as tree in trace viewer', async ({ showTraceViewer }) => {
|
||||||
|
const traceViewer = await showTraceViewer([traceFile]);
|
||||||
|
await expect(traceViewer.actionTitles).toHaveText([
|
||||||
|
/browserContext.newPage/,
|
||||||
|
/page.gotodata:text\/html,<!DOCTYPE html><html>Hello world<\/html>/,
|
||||||
|
/page.setContent/,
|
||||||
|
/expect.toHaveTextlocator\('button'\)/,
|
||||||
|
/expect.toBeHiddengetByTestId\('amazing-btn'\)/,
|
||||||
|
/expect.toBeHiddengetByTestId\(\/amazing-btn-regex\/\)/,
|
||||||
|
/page.evaluate/,
|
||||||
|
/page.evaluate/,
|
||||||
|
/locator.clickgetByText\('Click'\)/,
|
||||||
|
/High-level Group/,
|
||||||
|
/page.waitForNavigation/,
|
||||||
|
/page.waitForResponse/,
|
||||||
|
/page.waitForTimeout/,
|
||||||
|
/page.gotohttp:\/\/localhost:\d+\/frames\/frame.html/,
|
||||||
|
/page.setViewportSize/,
|
||||||
|
]);
|
||||||
|
await traceViewer.actionsTree.locator('.list-view-entry:has-text("High-level Group") .codicon-chevron-right').click();
|
||||||
|
await traceViewer.actionsTree.locator('.list-view-entry:has-text("First Mid-level Group") .codicon-chevron-right').click();
|
||||||
|
await traceViewer.actionsTree.locator('.list-view-entry:has-text("Second Mid-level Group") .codicon-chevron-right').click();
|
||||||
|
await expect(traceViewer.actionTitles).toHaveText([
|
||||||
|
/browserContext.newPage/,
|
||||||
|
/page.gotodata:text\/html,<!DOCTYPE html><html>Hello world<\/html>/,
|
||||||
|
/page.setContent/,
|
||||||
|
/expect.toHaveTextlocator\('button'\)/,
|
||||||
|
/expect.toBeHiddengetByTestId\('amazing-btn'\)/,
|
||||||
|
/expect.toBeHiddengetByTestId\(\/amazing-btn-regex\/\)/,
|
||||||
|
/page.evaluate/,
|
||||||
|
/page.evaluate/,
|
||||||
|
/locator.clickgetByText\('Click'\)/,
|
||||||
|
/High-level Group/,
|
||||||
|
/First Mid-level Group/,
|
||||||
|
/locator\.clicklocator\('button'\)\.first\(\)/,
|
||||||
|
/Second Mid-level Group/,
|
||||||
|
/expect\.toBeVisiblegetByText\('Click'\)/,
|
||||||
|
/page.waitForNavigation/,
|
||||||
|
/page.waitForResponse/,
|
||||||
|
/page.waitForTimeout/,
|
||||||
|
/page.gotohttp:\/\/localhost:\d+\/frames\/frame.html/,
|
||||||
|
/page.setViewportSize/,
|
||||||
|
]);
|
||||||
|
await expect(traceViewer.actionsTree.locator('.list-view-entry:has-text("First Mid-level Group") > .list-view-indent')).toHaveCount(1);
|
||||||
|
await expect(traceViewer.actionsTree.locator('.list-view-entry:has-text("Second Mid-level Group") > .list-view-indent')).toHaveCount(1);
|
||||||
|
await expect(traceViewer.actionsTree.locator('.list-view-entry:has-text("locator.clicklocator(\'button\').first()") > .list-view-indent')).toHaveCount(2);
|
||||||
|
await expect(traceViewer.actionsTree.locator('.list-view-entry:has-text("expect.toBeVisiblegetByText(\'Click\')") > .list-view-indent')).toHaveCount(2);
|
||||||
|
|
||||||
|
await traceViewer.showSourceTab();
|
||||||
|
await traceViewer.selectAction('High-level Group');
|
||||||
|
await expect(traceViewer.sourceCodeTab.locator('.source-tab-file-name')).toHaveAttribute('title', __filename);
|
||||||
|
await expect(traceViewer.sourceCodeTab.locator('.source-line-running')).toHaveText(/\d+\s+await context.tracing.group\('High-level Group'\);/);
|
||||||
|
|
||||||
|
await traceViewer.selectAction('First Mid-level Group');
|
||||||
|
await expect(traceViewer.sourceCodeTab.locator('.source-tab-file-name')).toHaveAttribute('title', `${__dirname}/tracing.spec.ts`);
|
||||||
|
|
||||||
|
await traceViewer.selectAction('Second Mid-level Group');
|
||||||
|
await expect(traceViewer.sourceCodeTab.getByText(/Licensed under the Apache License/)).toBeVisible();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
test('should open simple trace viewer', async ({ showTraceViewer }) => {
|
test('should open simple trace viewer', async ({ showTraceViewer }) => {
|
||||||
const traceViewer = await showTraceViewer([traceFile]);
|
const traceViewer = await showTraceViewer([traceFile]);
|
||||||
await expect(traceViewer.actionTitles).toHaveText([
|
await expect(traceViewer.actionTitles).toHaveText([
|
||||||
|
|
@ -114,6 +184,7 @@ test('should open simple trace viewer', async ({ showTraceViewer }) => {
|
||||||
/page.evaluate/,
|
/page.evaluate/,
|
||||||
/page.evaluate/,
|
/page.evaluate/,
|
||||||
/locator.clickgetByText\('Click'\)/,
|
/locator.clickgetByText\('Click'\)/,
|
||||||
|
/High-level Group/,
|
||||||
/page.waitForNavigation/,
|
/page.waitForNavigation/,
|
||||||
/page.waitForResponse/,
|
/page.waitForResponse/,
|
||||||
/page.waitForTimeout/,
|
/page.waitForTimeout/,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue