add 1.42 format test
This commit is contained in:
parent
51cdd27080
commit
1a3c561fcd
127
packages/playwright/src/reporters/versions/blobV1.ts
Normal file
127
packages/playwright/src/reporters/versions/blobV1.ts
Normal file
|
|
@ -0,0 +1,127 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) Microsoft Corporation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import type { Metadata } from '../../../types/test';
|
||||||
|
import type * as reporterTypes from '../../../types/testReporter';
|
||||||
|
|
||||||
|
export type JsonLocation = reporterTypes.Location;
|
||||||
|
export type JsonError = string;
|
||||||
|
export type JsonStackFrame = { file: string, line: number, column: number };
|
||||||
|
|
||||||
|
export type JsonStdIOType = 'stdout' | 'stderr';
|
||||||
|
|
||||||
|
export type JsonConfig = Pick<reporterTypes.FullConfig, 'configFile' | 'globalTimeout' | 'maxFailures' | 'metadata' | 'rootDir' | 'version' | 'workers'>;
|
||||||
|
|
||||||
|
export type JsonPattern = {
|
||||||
|
s?: string;
|
||||||
|
r?: { source: string, flags: string };
|
||||||
|
};
|
||||||
|
|
||||||
|
export type JsonProject = {
|
||||||
|
grep: JsonPattern[];
|
||||||
|
grepInvert: JsonPattern[];
|
||||||
|
metadata: Metadata;
|
||||||
|
name: string;
|
||||||
|
dependencies: string[];
|
||||||
|
// This is relative to root dir.
|
||||||
|
snapshotDir: string;
|
||||||
|
// This is relative to root dir.
|
||||||
|
outputDir: string;
|
||||||
|
repeatEach: number;
|
||||||
|
retries: number;
|
||||||
|
suites: JsonSuite[];
|
||||||
|
teardown?: string;
|
||||||
|
// This is relative to root dir.
|
||||||
|
testDir: string;
|
||||||
|
testIgnore: JsonPattern[];
|
||||||
|
testMatch: JsonPattern[];
|
||||||
|
timeout: number;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type JsonSuite = {
|
||||||
|
title: string;
|
||||||
|
location?: JsonLocation;
|
||||||
|
suites: JsonSuite[];
|
||||||
|
tests: JsonTestCase[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export type JsonTestCase = {
|
||||||
|
testId: string;
|
||||||
|
title: string;
|
||||||
|
location: JsonLocation;
|
||||||
|
retries: number;
|
||||||
|
tags?: string[];
|
||||||
|
repeatEachIndex: number;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type JsonTestEnd = {
|
||||||
|
testId: string;
|
||||||
|
expectedStatus: reporterTypes.TestStatus;
|
||||||
|
timeout: number;
|
||||||
|
annotations: { type: string, description?: string }[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export type JsonTestResultStart = {
|
||||||
|
id: string;
|
||||||
|
retry: number;
|
||||||
|
workerIndex: number;
|
||||||
|
parallelIndex: number;
|
||||||
|
startTime: number;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type JsonAttachment = Omit<reporterTypes.TestResult['attachments'][0], 'body'> & { base64?: string };
|
||||||
|
|
||||||
|
export type JsonTestResultEnd = {
|
||||||
|
id: string;
|
||||||
|
duration: number;
|
||||||
|
status: reporterTypes.TestStatus;
|
||||||
|
errors: reporterTypes.TestError[];
|
||||||
|
attachments: JsonAttachment[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export type JsonTestStepStart = {
|
||||||
|
id: string;
|
||||||
|
parentStepId?: string;
|
||||||
|
title: string;
|
||||||
|
category: string,
|
||||||
|
startTime: number;
|
||||||
|
location?: reporterTypes.Location;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type JsonTestStepEnd = {
|
||||||
|
id: string;
|
||||||
|
duration: number;
|
||||||
|
error?: reporterTypes.TestError;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type JsonFullResult = {
|
||||||
|
status: reporterTypes.FullResult['status'];
|
||||||
|
startTime: number;
|
||||||
|
duration: number;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type JsonEvent = {
|
||||||
|
method: string;
|
||||||
|
params: any
|
||||||
|
};
|
||||||
|
|
||||||
|
export type BlobReportMetadata = {
|
||||||
|
version: number;
|
||||||
|
userAgent: string;
|
||||||
|
name?: string;
|
||||||
|
shard?: { total: number, current: number };
|
||||||
|
pathSeparator?: string;
|
||||||
|
};
|
||||||
BIN
tests/assets/blob-1.42.zip
Normal file
BIN
tests/assets/blob-1.42.zip
Normal file
Binary file not shown.
|
|
@ -1741,3 +1741,52 @@ test('TestSuite.project() should return owning project', async ({ runInlineTest,
|
||||||
expect(exitCode).toBe(0);
|
expect(exitCode).toBe(0);
|
||||||
expect(output).toContain(`test project: my-project`);
|
expect(output).toContain(`test project: my-project`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('open blob-1.42', async ({ runInlineTest, mergeReports }) => {
|
||||||
|
test.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/29984' });
|
||||||
|
await runInlineTest({
|
||||||
|
'echo-reporter.js': `
|
||||||
|
export default class EchoReporter {
|
||||||
|
lines = [];
|
||||||
|
onTestBegin(test) {
|
||||||
|
this.lines.push(test.titlePath().join(' > '));
|
||||||
|
}
|
||||||
|
onEnd() {
|
||||||
|
console.log(this.lines.join('\\n'));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
`,
|
||||||
|
'merge.config.ts': `module.exports = {
|
||||||
|
testDir: 'mergeRoot',
|
||||||
|
reporter: './echo-reporter.js'
|
||||||
|
};`,
|
||||||
|
});
|
||||||
|
|
||||||
|
const blobDir = test.info().outputPath('blob-report');
|
||||||
|
await fs.promises.mkdir(blobDir, { recursive: true });
|
||||||
|
await fs.promises.copyFile(path.join(__dirname, '../assets/blob-1.42.zip'), path.join(blobDir, 'blob-1.42.zip'));
|
||||||
|
|
||||||
|
const { exitCode, output } = await mergeReports(blobDir, undefined, { additionalArgs: ['--config', 'merge.config.ts'] });
|
||||||
|
expect(exitCode).toBe(0);
|
||||||
|
expect(output).toContain(` > chromium > example.spec.ts > test 0
|
||||||
|
> chromium > example.spec.ts > describe 1 > describe 2 > test 3
|
||||||
|
> chromium > example.spec.ts > describe 1 > describe 2 > test 4
|
||||||
|
> chromium > example.spec.ts > describe 1 > describe 2 > test 2
|
||||||
|
> chromium > example.spec.ts > describe 1 > test 1
|
||||||
|
> chromium > example.spec.ts > describe 1 > test 5
|
||||||
|
> chromium > example.spec.ts > test 6
|
||||||
|
> firefox > example.spec.ts > describe 1 > describe 2 > test 2
|
||||||
|
> firefox > example.spec.ts > describe 1 > describe 2 > test 3
|
||||||
|
> firefox > example.spec.ts > test 0
|
||||||
|
> firefox > example.spec.ts > describe 1 > describe 2 > test 4
|
||||||
|
> firefox > example.spec.ts > describe 1 > test 1
|
||||||
|
> firefox > example.spec.ts > test 6
|
||||||
|
> firefox > example.spec.ts > describe 1 > test 5
|
||||||
|
> webkit > example.spec.ts > describe 1 > describe 2 > test 4
|
||||||
|
> webkit > example.spec.ts > test 0
|
||||||
|
> webkit > example.spec.ts > describe 1 > test 1
|
||||||
|
> webkit > example.spec.ts > describe 1 > describe 2 > test 2
|
||||||
|
> webkit > example.spec.ts > describe 1 > describe 2 > test 3
|
||||||
|
> webkit > example.spec.ts > test 6
|
||||||
|
> webkit > example.spec.ts > describe 1 > test 5`);
|
||||||
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue