chore: use custom expect message in trace step (#26752)
This commit is contained in:
parent
ee203b782c
commit
38f1e62642
|
|
@ -250,11 +250,12 @@ class ExpectMetaInfoProxyHandler implements ProxyHandler<any> {
|
||||||
const argsSuffix = computeArgsSuffix(matcherName, args);
|
const argsSuffix = computeArgsSuffix(matcherName, args);
|
||||||
|
|
||||||
const defaultTitle = `expect${this._info.isPoll ? '.poll' : ''}${this._info.isSoft ? '.soft' : ''}${this._info.isNot ? '.not' : ''}.${matcherName}${argsSuffix}`;
|
const defaultTitle = `expect${this._info.isPoll ? '.poll' : ''}${this._info.isSoft ? '.soft' : ''}${this._info.isNot ? '.not' : ''}.${matcherName}${argsSuffix}`;
|
||||||
|
const title = customMessage || defaultTitle;
|
||||||
const wallTime = Date.now();
|
const wallTime = Date.now();
|
||||||
const step = matcherName !== 'toPass' ? testInfo._addStep({
|
const step = matcherName !== 'toPass' ? testInfo._addStep({
|
||||||
location: stackFrames[0],
|
location: stackFrames[0],
|
||||||
category: 'expect',
|
category: 'expect',
|
||||||
title: trimLongString(customMessage || defaultTitle, 1024),
|
title: trimLongString(title, 1024),
|
||||||
params: args[0] ? { expected: args[0] } : undefined,
|
params: args[0] ? { expected: args[0] } : undefined,
|
||||||
wallTime,
|
wallTime,
|
||||||
infectParentStepsWithError: this._info.isSoft,
|
infectParentStepsWithError: this._info.isSoft,
|
||||||
|
|
@ -301,7 +302,7 @@ class ExpectMetaInfoProxyHandler implements ProxyHandler<any> {
|
||||||
if (this._info.isPoll || (matcherName in customAsyncMatchers && matcherName !== 'toPass')) {
|
if (this._info.isPoll || (matcherName in customAsyncMatchers && matcherName !== 'toPass')) {
|
||||||
return (async () => {
|
return (async () => {
|
||||||
try {
|
try {
|
||||||
const expectZone: ExpectZone = { title: defaultTitle, wallTime };
|
const expectZone: ExpectZone = { title, wallTime };
|
||||||
await zones.run<ExpectZone, any>('expectZone', expectZone, async () => {
|
await zones.run<ExpectZone, any>('expectZone', expectZone, async () => {
|
||||||
// We assume that the matcher will read the current expect timeout the first thing.
|
// We assume that the matcher will read the current expect timeout the first thing.
|
||||||
setCurrentExpectConfigureTimeout(this._info.timeout);
|
setCurrentExpectConfigureTimeout(this._info.timeout);
|
||||||
|
|
|
||||||
|
|
@ -731,3 +731,38 @@ test('should not throw when screenshot on failure fails', async ({ runInlineTest
|
||||||
// One screenshot for the page, no screenshot for pdf page since it should have failed.
|
// One screenshot for the page, no screenshot for pdf page since it should have failed.
|
||||||
expect(attachedScreenshots.length).toBe(1);
|
expect(attachedScreenshots.length).toBe(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('should use custom expect message in trace', async ({ runInlineTest }, testInfo) => {
|
||||||
|
const result = await runInlineTest({
|
||||||
|
'playwright.config.ts': `
|
||||||
|
module.exports = { use: { trace: { mode: 'on' } } };
|
||||||
|
`,
|
||||||
|
'a.spec.ts': `
|
||||||
|
import { test, expect } from '@playwright/test';
|
||||||
|
test('fail', async ({ page }) => {
|
||||||
|
await expect(
|
||||||
|
page.getByRole('button', { name: 'Find a hotel' }),
|
||||||
|
'expect to have text: find a hotel'
|
||||||
|
).toHaveCount(0);
|
||||||
|
});
|
||||||
|
`,
|
||||||
|
}, { workers: 1 });
|
||||||
|
|
||||||
|
expect(result.exitCode).toBe(0);
|
||||||
|
expect(result.passed).toBe(1);
|
||||||
|
const trace = await parseTrace(testInfo.outputPath('test-results', 'a-fail', 'trace.zip'));
|
||||||
|
expect(trace.actionTree).toEqual([
|
||||||
|
'Before Hooks',
|
||||||
|
' fixture: browser',
|
||||||
|
' browserType.launch',
|
||||||
|
' fixture: context',
|
||||||
|
' browser.newContext',
|
||||||
|
' tracing.start',
|
||||||
|
' fixture: page',
|
||||||
|
' browserContext.newPage',
|
||||||
|
'expect to have text: find a hotel',
|
||||||
|
'After Hooks',
|
||||||
|
' fixture: page',
|
||||||
|
' fixture: context',
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue