mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	chore(html): use api prefix to qualify public types (#34121)
This commit is contained in:
		
							parent
							
								
									c89e213eff
								
							
						
					
					
						commit
						cce8e8e0e5
					
				@ -21,7 +21,7 @@ import path from 'path';
 | 
			
		||||
import type { TransformCallback } from 'stream';
 | 
			
		||||
import { Transform } from 'stream';
 | 
			
		||||
import { codeFrameColumns } from '../transform/babelBundle';
 | 
			
		||||
import type { FullResult, FullConfig, Location, Suite, TestCase as TestCasePublic, TestResult as TestResultPublic, TestStep as TestStepPublic, TestError } from '../../types/testReporter';
 | 
			
		||||
import type * as api from '../../types/testReporter';
 | 
			
		||||
import { HttpServer, assert, calculateSha1, copyFileAndMakeWritable, gracefullyProcessExitDoNotHang, removeFolders, sanitizeForFilePath, toPosixPath } from 'playwright-core/lib/utils';
 | 
			
		||||
import { colors, formatError, formatResultFailure, stripAnsiEscapes } from './base';
 | 
			
		||||
import { resolveReporterOutputPath } from '../util';
 | 
			
		||||
@ -56,8 +56,8 @@ type HtmlReporterOptions = {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class HtmlReporter implements ReporterV2 {
 | 
			
		||||
  private config!: FullConfig;
 | 
			
		||||
  private suite!: Suite;
 | 
			
		||||
  private config!: api.FullConfig;
 | 
			
		||||
  private suite!: api.Suite;
 | 
			
		||||
  private _options: HtmlReporterOptions;
 | 
			
		||||
  private _outputFolder!: string;
 | 
			
		||||
  private _attachmentsBaseURL!: string;
 | 
			
		||||
@ -65,7 +65,7 @@ class HtmlReporter implements ReporterV2 {
 | 
			
		||||
  private _port: number | undefined;
 | 
			
		||||
  private _host: string | undefined;
 | 
			
		||||
  private _buildResult: { ok: boolean, singleTestId: string | undefined } | undefined;
 | 
			
		||||
  private _topLevelErrors: TestError[] = [];
 | 
			
		||||
  private _topLevelErrors: api.TestError[] = [];
 | 
			
		||||
 | 
			
		||||
  constructor(options: HtmlReporterOptions) {
 | 
			
		||||
    this._options = options;
 | 
			
		||||
@ -79,11 +79,11 @@ class HtmlReporter implements ReporterV2 {
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  onConfigure(config: FullConfig) {
 | 
			
		||||
  onConfigure(config: api.FullConfig) {
 | 
			
		||||
    this.config = config;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  onBegin(suite: Suite) {
 | 
			
		||||
  onBegin(suite: api.Suite) {
 | 
			
		||||
    const { outputFolder, open, attachmentsBaseURL, host, port } = this._resolveOptions();
 | 
			
		||||
    this._outputFolder = outputFolder;
 | 
			
		||||
    this._open = open;
 | 
			
		||||
@ -125,11 +125,11 @@ class HtmlReporter implements ReporterV2 {
 | 
			
		||||
    return !!relativePath && !relativePath.startsWith('..') && !path.isAbsolute(relativePath);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  onError(error: TestError): void {
 | 
			
		||||
  onError(error: api.TestError): void {
 | 
			
		||||
    this._topLevelErrors.push(error);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async onEnd(result: FullResult) {
 | 
			
		||||
  async onEnd(result: api.FullResult) {
 | 
			
		||||
    const projectSuites = this.suite.suites;
 | 
			
		||||
    await removeFolders([this._outputFolder]);
 | 
			
		||||
    const builder = new HtmlBuilder(this.config, this._outputFolder, this._attachmentsBaseURL);
 | 
			
		||||
@ -223,14 +223,14 @@ export function startHtmlReportServer(folder: string): HttpServer {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class HtmlBuilder {
 | 
			
		||||
  private _config: FullConfig;
 | 
			
		||||
  private _config: api.FullConfig;
 | 
			
		||||
  private _reportFolder: string;
 | 
			
		||||
  private _stepsInFile = new MultiMap<string, TestStep>();
 | 
			
		||||
  private _dataZipFile: ZipFile;
 | 
			
		||||
  private _hasTraces = false;
 | 
			
		||||
  private _attachmentsBaseURL: string;
 | 
			
		||||
 | 
			
		||||
  constructor(config: FullConfig, outputDir: string, attachmentsBaseURL: string) {
 | 
			
		||||
  constructor(config: api.FullConfig, outputDir: string, attachmentsBaseURL: string) {
 | 
			
		||||
    this._config = config;
 | 
			
		||||
    this._reportFolder = outputDir;
 | 
			
		||||
    fs.mkdirSync(this._reportFolder, { recursive: true });
 | 
			
		||||
@ -238,7 +238,7 @@ class HtmlBuilder {
 | 
			
		||||
    this._attachmentsBaseURL = attachmentsBaseURL;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async build(metadata: Metadata, projectSuites: Suite[], result: FullResult, topLevelErrors: TestError[]): Promise<{ ok: boolean, singleTestId: string | undefined }> {
 | 
			
		||||
  async build(metadata: Metadata, projectSuites: api.Suite[], result: api.FullResult, topLevelErrors: api.TestError[]): Promise<{ ok: boolean, singleTestId: string | undefined }> {
 | 
			
		||||
    const data = new Map<string, { testFile: TestFile, testFileSummary: TestFileSummary }>();
 | 
			
		||||
    for (const projectSuite of projectSuites) {
 | 
			
		||||
      for (const fileSuite of projectSuite.suites) {
 | 
			
		||||
@ -378,7 +378,7 @@ class HtmlBuilder {
 | 
			
		||||
    this._dataZipFile.addBuffer(Buffer.from(JSON.stringify(data)), fileName);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private _processSuite(suite: Suite, projectName: string, path: string[], outTests: TestEntry[]) {
 | 
			
		||||
  private _processSuite(suite: api.Suite, projectName: string, path: string[], outTests: TestEntry[]) {
 | 
			
		||||
    const newPath = [...path, suite.title];
 | 
			
		||||
    suite.entries().forEach(e => {
 | 
			
		||||
      if (e.type === 'test')
 | 
			
		||||
@ -388,7 +388,7 @@ class HtmlBuilder {
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private _createTestEntry(test: TestCasePublic, projectName: string, path: string[]): TestEntry {
 | 
			
		||||
  private _createTestEntry(test: api.TestCase, projectName: string, path: string[]): TestEntry {
 | 
			
		||||
    const duration = test.results.reduce((a, r) => a + r.duration, 0);
 | 
			
		||||
    const location = this._relativeLocation(test.location)!;
 | 
			
		||||
    path = path.slice(1).filter(path => path.length > 0);
 | 
			
		||||
@ -500,7 +500,7 @@ class HtmlBuilder {
 | 
			
		||||
    }).filter(Boolean) as TestAttachment[];
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private _createTestResult(test: TestCasePublic, result: TestResultPublic): TestResult {
 | 
			
		||||
  private _createTestResult(test: api.TestCase, result: api.TestResult): TestResult {
 | 
			
		||||
    return {
 | 
			
		||||
      duration: result.duration,
 | 
			
		||||
      startTime: result.startTime.toISOString(),
 | 
			
		||||
@ -531,7 +531,7 @@ class HtmlBuilder {
 | 
			
		||||
    return result;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private _relativeLocation(location: Location | undefined): Location | undefined {
 | 
			
		||||
  private _relativeLocation(location: api.Location | undefined): api.Location | undefined {
 | 
			
		||||
    if (!location)
 | 
			
		||||
      return undefined;
 | 
			
		||||
    const file = toPosixPath(path.relative(this._config.rootDir, location.file));
 | 
			
		||||
@ -609,9 +609,9 @@ function stdioAttachment(chunk: Buffer | string, type: 'stdout' | 'stderr'): Jso
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type DedupedStep = { step: TestStepPublic, count: number, duration: number };
 | 
			
		||||
type DedupedStep = { step: api.TestStep, count: number, duration: number };
 | 
			
		||||
 | 
			
		||||
function dedupeSteps(steps: TestStepPublic[]) {
 | 
			
		||||
function dedupeSteps(steps: api.TestStep[]) {
 | 
			
		||||
  const result: DedupedStep[] = [];
 | 
			
		||||
  let lastResult = undefined;
 | 
			
		||||
  for (const step of steps) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user