docs: support optional methods (#13415)

So far, these are used in `Reporter`.
This commit is contained in:
Dmitry Gozman 2022-04-07 18:51:05 -07:00 committed by GitHub
parent 91333daf09
commit cef476b89f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 73 additions and 74 deletions

View File

@ -89,7 +89,7 @@ Here is a typical order of reporter calls:
Additionally, [`method: Reporter.onStdOut`] and [`method: Reporter.onStdErr`] are called when standard output is produced in the worker process, possibly during a test execution,
and [`method: Reporter.onError`] is called when something went wrong outside of the test execution.
## method: Reporter.onBegin
## optional method: Reporter.onBegin
Called once before running tests. All tests have been already discovered and put into a hierarchy of [Suite]s.
@ -105,7 +105,7 @@ The root suite that contains all projects, files and test cases.
## async method: Reporter.onEnd
## optional async method: Reporter.onEnd
Called after all tests has been run, or testing has been interrupted. Note that this method may return a [Promise] and Playwright Test will await it.
@ -122,7 +122,7 @@ Result of the full test run.
## method: Reporter.onError
## optional method: Reporter.onError
Called on some global error, for example unhandled exception in the worker process.
@ -132,7 +132,7 @@ Called on some global error, for example unhandled exception in the worker proce
The error.
## method: Reporter.onStdErr
## optional method: Reporter.onStdErr
Called when something has been written to the standard error in the worker process.
@ -152,7 +152,7 @@ Test that was running. Note that output may happen when no test is running, in w
Result of the test run, this object gets populated while the test runs.
## method: Reporter.onStdOut
## optional method: Reporter.onStdOut
Called when something has been written to the standard output in the worker process.
@ -171,7 +171,7 @@ Test that was running. Note that output may happen when no test is running, in w
Result of the test run, this object gets populated while the test runs.
## method: Reporter.onStepBegin
## optional method: Reporter.onStepBegin
Called when a test step started in the worker process.
@ -190,7 +190,7 @@ Result of the test run, this object gets populated while the test runs.
Test step instance that has started.
## method: Reporter.onStepEnd
## optional method: Reporter.onStepEnd
Called when a test step finished in the worker process.
@ -209,7 +209,7 @@ Result of the test run.
Test step instance that has finished.
## method: Reporter.onTestBegin
## optional method: Reporter.onTestBegin
Called after a test has been started in the worker process.
@ -224,7 +224,7 @@ Test that has been started.
Result of the test run, this object gets populated while the test runs.
## method: Reporter.onTestEnd
## optional method: Reporter.onTestEnd
Called after a test has been finished in the worker process.
@ -239,7 +239,7 @@ Test that has been finished.
Result of the test run.
## method: Reporter.printsToStdio
## optional method: Reporter.printsToStdio
- returns: <[boolean]>
Whether this reporter uses stdio for reporting. When it does not, Playwright Test could add some output to enhance user experience.

View File

@ -355,62 +355,12 @@ export interface FullResult {
* went wrong outside of the test execution.
*/
export interface Reporter {
/**
* Whether this reporter uses stdio for reporting. When it does not, Playwright Test could add some output to enhance user
* experience.
*/
printsToStdio?(): boolean;
/**
* Called once before running tests. All tests have been already discovered and put into a hierarchy of [Suite]s.
* @param config Resolved configuration.
* @param suite The root suite that contains all projects, files and test cases.
*/
onBegin?(config: FullConfig, suite: Suite): void;
/**
* Called after a test has been started in the worker process.
* @param test Test that has been started.
* @param result Result of the test run, this object gets populated while the test runs.
*/
onTestBegin?(test: TestCase, result: TestResult): void;
/**
* Called when something has been written to the standard output in the worker process.
* @param chunk Output chunk.
* @param test Test that was running. Note that output may happen when no test is running, in which case this will be [void].
* @param result Result of the test run, this object gets populated while the test runs.
*/
onStdOut?(chunk: string | Buffer, test?: TestCase, result?: TestResult): void;
/**
* Called when something has been written to the standard error in the worker process.
* @param chunk Output chunk.
* @param test Test that was running. Note that output may happen when no test is running, in which case this will be [void].
* @param result Result of the test run, this object gets populated while the test runs.
*/
onStdErr?(chunk: string | Buffer, test?: TestCase, result?: TestResult): void;
/**
* Called after a test has been finished in the worker process.
* @param test Test that has been finished.
* @param result Result of the test run.
*/
onTestEnd?(test: TestCase, result: TestResult): void;
/**
* Called when a test step started in the worker process.
* @param test Test that the step belongs to.
* @param result Result of the test run, this object gets populated while the test runs.
* @param step Test step instance that has started.
*/
onStepBegin?(test: TestCase, result: TestResult, step: TestStep): void;
/**
* Called when a test step finished in the worker process.
* @param test Test that the step belongs to.
* @param result Result of the test run.
* @param step Test step instance that has finished.
*/
onStepEnd?(test: TestCase, result: TestResult, step: TestStep): void;
/**
* Called on some global error, for example unhandled exception in the worker process.
* @param error The error.
*/
onError?(error: TestError): void;
/**
* Called after all tests has been run, or testing has been interrupted. Note that this method may return a [Promise] and
* Playwright Test will await it.
@ -422,7 +372,63 @@ export interface Reporter {
* - `'interrupted'` - Interrupted by the user.
*/
onEnd?(result: FullResult): void | Promise<void>;
}
/**
* Called on some global error, for example unhandled exception in the worker process.
* @param error The error.
*/
onError?(error: TestError): void;
/**
* Called when something has been written to the standard error in the worker process.
* @param chunk Output chunk.
* @param test Test that was running. Note that output may happen when no test is running, in which case this will be [void].
* @param result Result of the test run, this object gets populated while the test runs.
*/
onStdErr?(chunk: string|Buffer, test: void|TestCase, result: void|TestResult): void;
/**
* Called when something has been written to the standard output in the worker process.
* @param chunk Output chunk.
* @param test Test that was running. Note that output may happen when no test is running, in which case this will be [void].
* @param result Result of the test run, this object gets populated while the test runs.
*/
onStdOut?(chunk: string|Buffer, test: void|TestCase, result: void|TestResult): void;
/**
* Called when a test step started in the worker process.
* @param test Test that the step belongs to.
* @param result Result of the test run, this object gets populated while the test runs.
* @param step Test step instance that has started.
*/
onStepBegin?(test: TestCase, result: TestResult, step: TestStep): void;
/**
* Called when a test step finished in the worker process.
* @param test Test that the step belongs to.
* @param result Result of the test run.
* @param step Test step instance that has finished.
*/
onStepEnd?(test: TestCase, result: TestResult, step: TestStep): void;
/**
* Called after a test has been started in the worker process.
* @param test Test that has been started.
* @param result Result of the test run, this object gets populated while the test runs.
*/
onTestBegin?(test: TestCase, result: TestResult): void;
/**
* Called after a test has been finished in the worker process.
* @param test Test that has been finished.
* @param result Result of the test run.
*/
onTestEnd?(test: TestCase, result: TestResult): void;
/**
* Whether this reporter uses stdio for reporting. When it does not, Playwright Test could add some output to enhance user
* experience.
*/
printsToStdio?(): boolean;}
// This is required to not export everything by default. See https://github.com/Microsoft/TypeScript/issues/19545#issuecomment-340490459
export {};

View File

@ -83,7 +83,7 @@ class ApiParser {
* @param {MarkdownNode} spec
*/
parseMember(spec) {
const match = spec.text.match(/(event|method|property|async method): ([^.]+)\.(.*)/);
const match = spec.text.match(/(event|method|property|async method|optional method|optional async method): ([^.]+)\.(.*)/);
if (!match)
throw new Error('Invalid member: ' + spec.text);
const name = match[3];
@ -105,10 +105,12 @@ class ApiParser {
member = Documentation.Member.createEvent(extractLangs(spec), name, returnType, comments);
if (match[1] === 'property')
member = Documentation.Member.createProperty(extractLangs(spec), name, returnType, comments, !optional);
if (match[1] === 'method' || match[1] === 'async method') {
if (['method', 'async method', 'optional method', 'optional async method'].includes(match[1])) {
member = Documentation.Member.createMethod(extractLangs(spec), name, [], returnType, comments);
if (match[1] === 'async method')
if (match[1].includes('async'))
member.async = true;
if (match[1].includes('optional'))
member.required = false;
}
const clazz = this.classes.get(match[2]);
const existingMember = clazz.membersArray.find(m => m.name === name && m.kind === member.kind);

View File

@ -285,9 +285,8 @@ Documentation.Member = class {
* @param {!Array<!Documentation.Member>} argsArray
* @param {MarkdownNode[]=} spec
* @param {boolean=} required
* @param {string[]=} templates
*/
constructor(kind, langs, name, type, argsArray, spec = undefined, required = true, templates = []) {
constructor(kind, langs, name, type, argsArray, spec = undefined, required = true) {
this.kind = kind;
this.langs = langs;
this.name = name;

View File

@ -44,15 +44,7 @@ export interface FullResult {
}
export interface Reporter {
printsToStdio?(): boolean;
onBegin?(config: FullConfig, suite: Suite): void;
onTestBegin?(test: TestCase, result: TestResult): void;
onStdOut?(chunk: string | Buffer, test?: TestCase, result?: TestResult): void;
onStdErr?(chunk: string | Buffer, test?: TestCase, result?: TestResult): void;
onTestEnd?(test: TestCase, result: TestResult): void;
onStepBegin?(test: TestCase, result: TestResult, step: TestStep): void;
onStepEnd?(test: TestCase, result: TestResult, step: TestStep): void;
onError?(error: TestError): void;
onEnd?(result: FullResult): void | Promise<void>;
}