Update generate_types script

This commit is contained in:
Yury Semikhatsky 2024-04-03 09:02:14 -07:00
parent 993c9a480c
commit 364aba8e32
2 changed files with 26 additions and 91 deletions

View file

@ -586,56 +586,6 @@ interface TestProject<TestArgs = {}, WorkerArgs = {}> {
timeout?: number; timeout?: number;
} }
/**
* Playwright Test supports running multiple test projects at the same time. This is useful for running tests in
* multiple configurations. For example, consider running tests against multiple browsers.
*
* `TestProject` encapsulates configuration specific to a single project. Projects are configured in
* [testConfig.projects](https://playwright.dev/docs/api/class-testconfig#test-config-projects) specified in the
* [configuration file](https://playwright.dev/docs/test-configuration). Note that all properties of {@link TestProject} are available in
* the top-level {@link TestConfig}, in which case they are shared between all projects.
*
* Here is an example configuration that runs every test in Chromium, Firefox and WebKit, both Desktop and Mobile
* versions.
*
* ```js
* // playwright.config.ts
* import { defineConfig, devices } from '@playwright/test';
*
* export default defineConfig({
* // Options shared for all projects.
* timeout: 30000,
* use: {
* ignoreHTTPSErrors: true,
* },
*
* // Options specific to each project.
* projects: [
* {
* name: 'chromium',
* use: devices['Desktop Chrome'],
* },
* {
* name: 'firefox',
* use: devices['Desktop Firefox'],
* },
* {
* name: 'webkit',
* use: devices['Desktop Safari'],
* },
* {
* name: 'Mobile Chrome',
* use: devices['Pixel 5'],
* },
* {
* name: 'Mobile Safari',
* use: devices['iPhone 12'],
* },
* ],
* });
* ```
*
*/
export interface Project<TestArgs = {}, WorkerArgs = {}> extends TestProject<TestArgs, WorkerArgs> { export interface Project<TestArgs = {}, WorkerArgs = {}> extends TestProject<TestArgs, WorkerArgs> {
} }
@ -1674,28 +1624,6 @@ interface TestConfig<TestArgs = {}, WorkerArgs = {}> {
workers?: number|string; workers?: number|string;
} }
/**
* Playwright Test provides many options to configure how your tests are collected and executed, for example `timeout`
* or `testDir`. These options are described in the {@link TestConfig} object in the
* [configuration file](https://playwright.dev/docs/test-configuration).
*
* Playwright Test supports running multiple test projects at the same time. Project-specific options should be put to
* [testConfig.projects](https://playwright.dev/docs/api/class-testconfig#test-config-projects), but top-level {@link
* TestConfig} can also define base options shared between all projects.
*
* ```js
* // playwright.config.ts
* import { defineConfig } from '@playwright/test';
*
* export default defineConfig({
* timeout: 30000,
* globalTimeout: 600000,
* reporter: 'list',
* testDir: './tests',
* });
* ```
*
*/
export interface Config<TestArgs = {}, WorkerArgs = {}> extends TestConfig<TestArgs, WorkerArgs> { export interface Config<TestArgs = {}, WorkerArgs = {}> extends TestConfig<TestArgs, WorkerArgs> {
} }

View file

@ -493,7 +493,14 @@ class TypesGenerator {
const coreDocumentation = parseApi(path.join(PROJECT_DIR, 'docs', 'src', 'api')); const coreDocumentation = parseApi(path.join(PROJECT_DIR, 'docs', 'src', 'api'));
const testDocumentation = parseApi(path.join(PROJECT_DIR, 'docs', 'src', 'test-api'), path.join(PROJECT_DIR, 'docs', 'src', 'api', 'params.md')); const testDocumentation = parseApi(path.join(PROJECT_DIR, 'docs', 'src', 'test-api'), path.join(PROJECT_DIR, 'docs', 'src', 'api', 'params.md'));
const reporterDocumentation = parseApi(path.join(PROJECT_DIR, 'docs', 'src', 'test-reporter-api')); const reporterDocumentation = parseApi(path.join(PROJECT_DIR, 'docs', 'src', 'test-reporter-api'));
const assertionClasses = new Set(['GenericAssertions', 'LocatorAssertions', 'PageAssertions', 'APIResponseAssertions', 'SnapshotAssertions', 'PlaywrightAssertions']); const assertionClasses = new Set([
'APIResponseAssertions',
'GenericAssertions',
'LocatorAssertions',
'PageAssertions',
'PlaywrightAssertions',
'SnapshotAssertions',
]);
/** /**
* @param {boolean} includeExperimental * @param {boolean} includeExperimental
@ -503,7 +510,7 @@ class TypesGenerator {
const documentation = coreDocumentation.clone(); const documentation = coreDocumentation.clone();
const generator = new TypesGenerator({ const generator = new TypesGenerator({
documentation, documentation,
doNotGenerate: new Set([...assertionClasses]), doNotGenerate: assertionClasses,
includeExperimental, includeExperimental,
}); });
let types = await generator.generateTypes(path.join(__dirname, 'overrides.d.ts')); let types = await generator.generateTypes(path.join(__dirname, 'overrides.d.ts'));
@ -536,12 +543,7 @@ class TypesGenerator {
documentation, documentation,
doNotGenerate: new Set([ doNotGenerate: new Set([
...coreDocumentation.classesArray.map(cls => cls.name).filter(name => !assertionClasses.has(name)), ...coreDocumentation.classesArray.map(cls => cls.name).filter(name => !assertionClasses.has(name)),
'PlaywrightAssertions',
'Test',
'Fixtures', 'Fixtures',
'TestOptions',
'TestConfig.use',
'TestProject.use',
'GenericAssertions.any', 'GenericAssertions.any',
'GenericAssertions.anything', 'GenericAssertions.anything',
'GenericAssertions.arrayContaining', 'GenericAssertions.arrayContaining',
@ -549,26 +551,31 @@ class TypesGenerator {
'GenericAssertions.objectContaining', 'GenericAssertions.objectContaining',
'GenericAssertions.stringContaining', 'GenericAssertions.stringContaining',
'GenericAssertions.stringMatching', 'GenericAssertions.stringMatching',
'PlaywrightAssertions',
'Test',
'TestConfig.use',
'TestOptions',
'TestProject.use',
]), ]),
overridesToDocsClassMapping: new Map([ overridesToDocsClassMapping: new Map([
['TestType', 'Test'], ['AsymmetricMatchers', 'GenericAssertions'],
['Config', 'TestConfig'], ['PlaywrightTestArgs', 'Fixtures'],
['Project', 'TestProject'],
['PlaywrightWorkerOptions', 'TestOptions'],
['PlaywrightTestOptions', 'TestOptions'], ['PlaywrightTestOptions', 'TestOptions'],
['PlaywrightWorkerArgs', 'Fixtures'], ['PlaywrightWorkerArgs', 'Fixtures'],
['PlaywrightTestArgs', 'Fixtures'], ['PlaywrightWorkerOptions', 'TestOptions'],
['AsymmetricMatchers', 'GenericAssertions'], ['TestType', 'Test'],
]), ]),
ignoreMissing: new Set([ ignoreMissing: new Set([
'Config',
'ExpectMatcherUtils',
'Matchers',
'PlaywrightWorkerArgs.playwright',
'PlaywrightWorkerOptions.defaultBrowserType',
'Project',
'SuiteFunction', 'SuiteFunction',
'TestFunction', 'TestFunction',
'PlaywrightWorkerOptions.defaultBrowserType',
'PlaywrightWorkerArgs.playwright',
'Matchers',
'ExpectMatcherUtils',
]), ]),
doNotExportClassNames: new Set([...assertionClasses, 'TestProject']), doNotExportClassNames: assertionClasses,
includeExperimental, includeExperimental,
}); });
return await generator.generateTypes(path.join(__dirname, 'overrides-test.d.ts')); return await generator.generateTypes(path.join(__dirname, 'overrides-test.d.ts'));
@ -590,8 +597,8 @@ class TypesGenerator {
'FullResult', 'FullResult',
'JSONReport', 'JSONReport',
'JSONReportError', 'JSONReportError',
'JSONReportSuite',
'JSONReportSpec', 'JSONReportSpec',
'JSONReportSuite',
'JSONReportTest', 'JSONReportTest',
'JSONReportTestResult', 'JSONReportTestResult',
'JSONReportTestStep', 'JSONReportTestStep',