chore: get rid of config and project inheritance

Reference https://github.com/microsoft/playwright/issues/29768
This commit is contained in:
Yury Semikhatsky 2024-04-02 18:01:20 -07:00
parent 63f876a335
commit dd54d8ac12
3 changed files with 527 additions and 622 deletions

File diff suppressed because it is too large Load diff

View file

@ -552,8 +552,6 @@ class TypesGenerator {
]), ]),
overridesToDocsClassMapping: new Map([ overridesToDocsClassMapping: new Map([
['TestType', 'Test'], ['TestType', 'Test'],
['Config', 'TestConfig'],
['Project', 'TestProject'],
['PlaywrightWorkerOptions', 'TestOptions'], ['PlaywrightWorkerOptions', 'TestOptions'],
['PlaywrightTestOptions', 'TestOptions'], ['PlaywrightTestOptions', 'TestOptions'],
['PlaywrightWorkerArgs', 'Fixtures'], ['PlaywrightWorkerArgs', 'Fixtures'],

View file

@ -31,25 +31,26 @@ export type ReporterDescription =
type UseOptions<TestArgs, WorkerArgs> = Partial<WorkerArgs> & Partial<TestArgs>; type UseOptions<TestArgs, WorkerArgs> = Partial<WorkerArgs> & Partial<TestArgs>;
export interface Project<TestArgs = {}, WorkerArgs = {}> extends TestProject { interface TestProject<TestArgs = {}, WorkerArgs = {}> {
use?: UseOptions<TestArgs, WorkerArgs>; use?: UseOptions<TestArgs, WorkerArgs>;
} }
export type Project<TestArgs = {}, WorkerArgs = {}> = TestProject<TestArgs, WorkerArgs>;
export interface ProjectInWorker<TestArgs = {}, WorkerArgs = {}> { export interface ProjectInWorker<TestArgs = {}, WorkerArgs = {}> {
use: UseOptions<PlaywrightTestOptions & TestArgs, PlaywrightWorkerOptions & WorkerArgs>; use: UseOptions<PlaywrightTestOptions & TestArgs, PlaywrightWorkerOptions & WorkerArgs>;
} }
type LiteralUnion<T extends U, U = string> = T | (U & { zz_IGNORE_ME?: never }); type LiteralUnion<T extends U, U = string> = T | (U & { zz_IGNORE_ME?: never });
interface TestConfig { interface TestConfig<TestArgs = {}, WorkerArgs = {}> {
projects?: Project<TestArgs, WorkerArgs>[];
reporter?: LiteralUnion<'list'|'dot'|'line'|'github'|'json'|'junit'|'null'|'html', string> | ReporterDescription[]; reporter?: LiteralUnion<'list'|'dot'|'line'|'github'|'json'|'junit'|'null'|'html', string> | ReporterDescription[];
use?: UseOptions<TestArgs, WorkerArgs>;
webServer?: TestConfigWebServer | TestConfigWebServer[]; webServer?: TestConfigWebServer | TestConfigWebServer[];
} }
export interface Config<TestArgs = {}, WorkerArgs = {}> extends TestConfig { export type Config<TestArgs = {}, WorkerArgs = {}> = TestConfig<TestArgs, WorkerArgs>;
projects?: Project<TestArgs, WorkerArgs>[];
use?: UseOptions<TestArgs, WorkerArgs>;
}
export type Metadata = { [key: string]: any }; export type Metadata = { [key: string]: any };