doc(html): document html reporter (#9528)

This commit is contained in:
Pavel Feldman 2021-10-15 07:15:30 -08:00 committed by GitHub
parent 9031c4d2e4
commit 458945821f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 61 additions and 3 deletions

View File

@ -258,6 +258,54 @@ Running 124 tests using 6 workers
······F·············································
```
### HTML reporter
HTML reporter produces a self-contained folder that contains report for the test run that can be served as a web page.
It is usually used together with some terminal reporter like `dot` or `line`.
```bash
npx playwright test --reporter=html,dot
```
By default, report is written into the `playwright-report` folder in the current working directory. One can override
that location using the `PLAYWRIGHT_HTML_REPORT` environment variable or a reporter configuration.
In configuration file, pass options directly:
```js js-flavor=js
// playwright.config.js
// @ts-check
/** @type {import('@playwright/test').PlaywrightTestConfig} */
const config = {
reporter: [ ['html', { outputFolder: 'my-report' }] ],
};
module.exports = config;
```
```js js-flavor=ts
// playwright.config.ts
import { PlaywrightTestConfig } from '@playwright/test';
const config: PlaywrightTestConfig = {
reporter: [ ['html', { outputFolder: 'my-report' }] ],
};
export default config;
```
A quick way of opening the last test run report is:
```bash
npx playwright show-report
```
Or if there is a custom folder name:
```bash
npx playwright show-report my-report
```
### JSON reporter
JSON reporter produces an object with all information about the test run. It is usually used together with some terminal reporter like `dot` or `line`.

View File

@ -102,6 +102,12 @@ export type TestStep = {
class HtmlReporter {
private config!: FullConfig;
private suite!: Suite;
private _outputFolder: string | undefined;
constructor(options: { outputFolder?: string } = {}) {
// TODO: resolve relative to config.
this._outputFolder = options.outputFolder;
}
onBegin(config: FullConfig, suite: Suite) {
this.config = config;
@ -115,7 +121,7 @@ class HtmlReporter {
const report = rawReporter.generateProjectReport(this.config, suite);
return report;
});
const reportFolder = htmlReportFolder();
const reportFolder = htmlReportFolder(this._outputFolder);
await removeFolders([reportFolder]);
const builder = new HtmlBuilder(reportFolder, this.config.rootDir);
const stats = builder.build(reports);
@ -134,8 +140,12 @@ class HtmlReporter {
}
}
export function htmlReportFolder(): string {
return path.resolve(process.cwd(), process.env[`PLAYWRIGHT_HTML_REPORT`] || 'playwright-report');
export function htmlReportFolder(outputFolder?: string): string {
if (process.env[`PLAYWRIGHT_HTML_REPORT`])
return path.resolve(process.cwd(), process.env[`PLAYWRIGHT_HTML_REPORT`]);
if (outputFolder)
return outputFolder;
return path.resolve(process.cwd(), 'playwright-report');
}
export async function showHTMLReport(reportFolder: string | undefined) {