Skip to content

Commit 710c2c4

Browse files
committed
added test
Signed-off-by: René <[email protected]>
1 parent 6f97148 commit 710c2c4

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed

tests/config/traceViewerFixtures.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export type TraceViewerFixtures = {
3636

3737
class TraceViewerPage {
3838
actionTitles: Locator;
39+
actionsTree: Locator;
3940
callLines: Locator;
4041
consoleLines: Locator;
4142
logLines: Locator;
@@ -46,9 +47,11 @@ class TraceViewerPage {
4647
networkRequests: Locator;
4748
metadataTab: Locator;
4849
snapshotContainer: Locator;
50+
sourceCodeTab: Locator;
4951

5052
constructor(public page: Page) {
5153
this.actionTitles = page.locator('.action-title');
54+
this.actionsTree = page.getByTestId('actions-tree');
5255
this.callLines = page.locator('.call-tab .call-line');
5356
this.logLines = page.getByTestId('log-list').locator('.list-view-entry');
5457
this.consoleLines = page.locator('.console-line');
@@ -59,6 +62,7 @@ class TraceViewerPage {
5962
this.networkRequests = page.getByTestId('network-list').locator('.list-view-entry');
6063
this.snapshotContainer = page.locator('.snapshot-container iframe.snapshot-visible[name=snapshot]');
6164
this.metadataTab = page.getByTestId('metadata-view');
65+
this.sourceCodeTab = page.getByTestId('source-code');
6266
}
6367

6468
async actionIconsText(action: string) {

tests/library/trace-viewer.spec.ts

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,15 @@ test.beforeAll(async function recordTrace({ browser, browserName, browserType, s
6262
}
6363
await doClick();
6464

65+
await context.tracing.group('High-level Group');
66+
await context.tracing.group('First Mid-level Group', { location: { file: `${__dirname}/tracing.spec.ts`, line: 100, column: 10 } });
67+
await page.locator('button >> nth=0').click();
68+
await context.tracing.groupEnd();
69+
await context.tracing.group('Second Mid-level Group', { location: { file: __filename } });
70+
await expect(page.getByText('Click')).toBeVisible();
71+
await context.tracing.groupEnd();
72+
await context.tracing.groupEnd();
73+
6574
await Promise.all([
6675
page.waitForNavigation(),
6776
page.waitForResponse(server.PREFIX + '/frames/frame.html'),
@@ -102,6 +111,67 @@ test('should open trace viewer on specific host', async ({ showTraceViewer }, te
102111
await expect(traceViewer.page).toHaveURL(/127.0.0.1/);
103112
});
104113

114+
test('should show groups as tree in trace viewer', async ({ showTraceViewer }) => {
115+
const traceViewer = await showTraceViewer([traceFile]);
116+
await expect(traceViewer.actionTitles).toHaveText([
117+
/browserContext.newPage/,
118+
/page.gotodata:text\/html,<!DOCTYPE html><html>Hello world<\/html>/,
119+
/page.setContent/,
120+
/expect.toHaveTextlocator\('button'\)/,
121+
/expect.toBeHiddengetByTestId\('amazing-btn'\)/,
122+
/expect.toBeHiddengetByTestId\(\/amazing-btn-regex\/\)/,
123+
/page.evaluate/,
124+
/page.evaluate/,
125+
/locator.clickgetByText\('Click'\)/,
126+
/High-level Group/,
127+
/page.waitForNavigation/,
128+
/page.waitForResponse/,
129+
/page.waitForTimeout/,
130+
/page.gotohttp:\/\/localhost:\d+\/frames\/frame.html/,
131+
/page.setViewportSize/,
132+
]);
133+
await traceViewer.actionsTree.locator('.list-view-entry:has-text("High-level Group") .codicon-chevron-right').click();
134+
await traceViewer.actionsTree.locator('.list-view-entry:has-text("First Mid-level Group") .codicon-chevron-right').click();
135+
await traceViewer.actionsTree.locator('.list-view-entry:has-text("Second Mid-level Group") .codicon-chevron-right').click();
136+
await expect(traceViewer.actionTitles).toHaveText([
137+
/browserContext.newPage/,
138+
/page.gotodata:text\/html,<!DOCTYPE html><html>Hello world<\/html>/,
139+
/page.setContent/,
140+
/expect.toHaveTextlocator\('button'\)/,
141+
/expect.toBeHiddengetByTestId\('amazing-btn'\)/,
142+
/expect.toBeHiddengetByTestId\(\/amazing-btn-regex\/\)/,
143+
/page.evaluate/,
144+
/page.evaluate/,
145+
/locator.clickgetByText\('Click'\)/,
146+
/High-level Group/,
147+
/First Mid-level Group/,
148+
/locator\.clicklocator\('button'\)\.first\(\)/,
149+
/Second Mid-level Group/,
150+
/expect\.toBeVisiblegetByText\('Click'\)/,
151+
/page.waitForNavigation/,
152+
/page.waitForResponse/,
153+
/page.waitForTimeout/,
154+
/page.gotohttp:\/\/localhost:\d+\/frames\/frame.html/,
155+
/page.setViewportSize/,
156+
]);
157+
await expect(traceViewer.actionsTree.locator('.list-view-entry:has-text("First Mid-level Group") > .list-view-indent')).toHaveCount(1);
158+
await expect(traceViewer.actionsTree.locator('.list-view-entry:has-text("Second Mid-level Group") > .list-view-indent')).toHaveCount(1);
159+
await expect(traceViewer.actionsTree.locator('.list-view-entry:has-text("locator.clicklocator(\'button\').first()") > .list-view-indent')).toHaveCount(2);
160+
await expect(traceViewer.actionsTree.locator('.list-view-entry:has-text("expect.toBeVisiblegetByText(\'Click\')") > .list-view-indent')).toHaveCount(2);
161+
162+
await traceViewer.showSourceTab();
163+
await traceViewer.selectAction('High-level Group');
164+
await expect(traceViewer.sourceCodeTab.locator('.source-tab-file-name')).toHaveAttribute('title', __filename);
165+
await expect(traceViewer.sourceCodeTab.locator('.source-line-running')).toHaveText(/\d+\s+await context.tracing.group\('High-level Group'\);/);
166+
167+
await traceViewer.selectAction('First Mid-level Group');
168+
await expect(traceViewer.sourceCodeTab.locator('.source-tab-file-name')).toHaveAttribute('title', `${__dirname}/tracing.spec.ts`);
169+
170+
await traceViewer.selectAction('Second Mid-level Group');
171+
await expect(traceViewer.sourceCodeTab.getByText(/Licensed under the Apache License/)).toBeVisible();
172+
});
173+
174+
105175
test('should open simple trace viewer', async ({ showTraceViewer }) => {
106176
const traceViewer = await showTraceViewer([traceFile]);
107177
await expect(traceViewer.actionTitles).toHaveText([
@@ -114,6 +184,7 @@ test('should open simple trace viewer', async ({ showTraceViewer }) => {
114184
/page.evaluate/,
115185
/page.evaluate/,
116186
/locator.clickgetByText\('Click'\)/,
187+
/High-level Group/,
117188
/page.waitForNavigation/,
118189
/page.waitForResponse/,
119190
/page.waitForTimeout/,

0 commit comments

Comments
 (0)