chore: move private fields to FullConfigInternal (#13261)

This commit is contained in:
Dmitry Gozman 2022-04-01 18:32:34 -07:00 committed by GitHub
parent 66cf82766e
commit f6936c0461
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 15 additions and 10 deletions

View file

@ -99,7 +99,7 @@ export class Loader {
const configUse = mergeObjects(this._defaultConfig.use, config.use);
config = mergeObjects(mergeObjects(this._defaultConfig, config), { use: configUse });
(this._fullConfig as any).__configDir = configDir;
this._fullConfig._configDir = configDir;
this._fullConfig.rootDir = config.testDir || this._configDir;
this._fullConfig.forbidOnly = takeFirst(this._configOverrides.forbidOnly, config.forbidOnly, baseFullConfig.forbidOnly);
this._fullConfig.fullyParallel = takeFirst(this._configOverrides.fullyParallel, config.fullyParallel, baseFullConfig.fullyParallel);
@ -474,6 +474,8 @@ const baseFullConfig: FullConfigInternal = {
workers: 1,
webServer: null,
_attachments: [],
_configDir: '',
_testGroupsCount: 0,
};
function resolveReporters(reporters: Config['reporter'], rootDir: string): ReporterDescription[]|undefined {

View file

@ -21,6 +21,7 @@ import milliseconds from 'ms';
import path from 'path';
import StackUtils from 'stack-utils';
import { FullConfig, TestCase, Suite, TestResult, TestError, Reporter, FullResult, TestStep, Location } from '../../types/testReporter';
import { FullConfigInternal } from '../types';
const stackUtils = new StackUtils();
@ -49,7 +50,7 @@ type TestSummary = {
export class BaseReporter implements Reporter {
duration = 0;
config!: FullConfig;
config!: FullConfigInternal;
suite!: Suite;
totalTestCount = 0;
result!: FullResult;
@ -65,7 +66,7 @@ export class BaseReporter implements Reporter {
onBegin(config: FullConfig, suite: Suite) {
this.monotonicStartTime = monotonicTime();
this.config = config;
this.config = config as FullConfigInternal;
this.suite = suite;
this.totalTestCount = suite.allTests().length;
}
@ -117,7 +118,7 @@ export class BaseReporter implements Reporter {
}
protected generateStartingMessage() {
const jobs = Math.min(this.config.workers, (this.config as any).__testGroupsCount);
const jobs = Math.min(this.config.workers, this.config._testGroupsCount);
const shardDetails = this.config.shard ? `, shard ${this.config.shard.current} of ${this.config.shard.total}` : '';
return `\nRunning ${this.totalTestCount} test${this.totalTestCount > 1 ? 's' : ''} using ${jobs} worker${jobs > 1 ? 's' : ''}${shardDetails}`;
}

View file

@ -27,6 +27,7 @@ import assert from 'assert';
import yazl from 'yazl';
import { stripAnsiEscapes } from './base';
import { getPackageJsonPath } from '../util';
import { FullConfigInternal } from '../types';
export type Stats = {
total: number;
@ -123,7 +124,7 @@ type HtmlReporterOptions = {
};
class HtmlReporter implements Reporter {
private config!: FullConfig;
private config!: FullConfigInternal;
private suite!: Suite;
private _options: HtmlReporterOptions;
@ -136,17 +137,16 @@ class HtmlReporter implements Reporter {
}
onBegin(config: FullConfig, suite: Suite) {
this.config = config;
this.config = config as FullConfigInternal;
this.suite = suite;
}
_resolveOptions(): { outputFolder: string, open: HtmlReportOpenOption } {
let { outputFolder } = this._options;
const configDir: string = (this.config as any).__configDir;
if (outputFolder)
outputFolder = path.resolve(configDir, outputFolder);
outputFolder = path.resolve(this.config._configDir, outputFolder);
return {
outputFolder: reportFolderFromEnv() ?? outputFolder ?? defaultReportFolder(configDir),
outputFolder: reportFolderFromEnv() ?? outputFolder ?? defaultReportFolder(this.config._configDir),
open: process.env.PW_TEST_HTML_REPORT_OPEN as any || this._options.open || 'on-failure',
};
}

View file

@ -346,7 +346,7 @@ export class Runner {
filterSuiteWithOnlySemantics(rootSuite, () => false, test => shardTests.has(test));
total = rootSuite.allTests().length;
}
(config as any).__testGroupsCount = testGroups.length;
config._testGroupsCount = testGroups.length;
// 9. Report begin
this._reporter.onBegin?.(config, rootSuite);

View file

@ -40,5 +40,7 @@ export interface TestStepInternal {
* increasing the surface area of the public API type called FullConfig.
*/
export interface FullConfigInternal extends FullConfigPublic {
_configDir: string;
_testGroupsCount: number;
_attachments: { name: string, path?: string, body?: Buffer, contentType: string }[];
}