chore: generate config section from config.d.ts (#1224)

This commit is contained in:
Simon Knott
2025-11-29 00:38:42 +01:00
committed by GitHub
parent 64f65ccd10
commit f4df37ca71
2 changed files with 45 additions and 2 deletions

View File

@@ -451,6 +451,8 @@ npx @playwright/mcp@latest --config path/to/config.json
<details> <details>
<summary>Configuration file schema</summary> <summary>Configuration file schema</summary>
<!--- Config generated by update-readme.js -->
```typescript ```typescript
{ {
/** /**
@@ -576,6 +578,18 @@ npx @playwright/mcp@latest --config path/to/config.json
*/ */
outputDir?: string; outputDir?: string;
network?: {
/**
* List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*/
allowedOrigins?: string[];
/**
* List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*/
blockedOrigins?: string[];
};
/** /**
* Specify the attribute to use for test ids, defaults to "data-testid". * Specify the attribute to use for test ids, defaults to "data-testid".
*/ */
@@ -597,8 +611,11 @@ npx @playwright/mcp@latest --config path/to/config.json
* Whether to send image responses to the client. Can be "allow", "omit", or "auto". Defaults to "auto", which sends images if the client can display them. * Whether to send image responses to the client. Can be "allow", "omit", or "auto". Defaults to "auto", which sends images if the client can display them.
*/ */
imageResponses?: 'allow' | 'omit'; imageResponses?: 'allow' | 'omit';
}; }
``` ```
<!--- End of config generated section -->
</details> </details>
### Standalone MCP server ### Standalone MCP server

View File

@@ -135,12 +135,38 @@ async function updateOptions(content) {
]); ]);
} }
/**
* @param {string} content
* @returns {Promise<string>}
*/
async function updateConfig(content) {
console.log('Updating config schema from config.d.ts...');
const configPath = path.join(__dirname, 'config.d.ts');
const configContent = await fs.promises.readFile(configPath, 'utf-8');
// Extract the Config type definition
const configTypeMatch = configContent.match(/export type Config = (\{[\s\S]*?\n\});/);
if (!configTypeMatch)
throw new Error('Config type not found in config.d.ts');
const configType = configTypeMatch[1]; // Use capture group to get just the object definition
const startMarker = `<!--- Config generated by ${path.basename(__filename)} -->`;
const endMarker = `<!--- End of config generated section -->`;
return updateSection(content, startMarker, endMarker, [
'```typescript',
configType,
'```',
]);
}
async function updateReadme() { async function updateReadme() {
const readmePath = path.join(__dirname, 'README.md'); const readmePath = path.join(__dirname, 'README.md');
const readmeContent = await fs.promises.readFile(readmePath, 'utf-8'); const readmeContent = await fs.promises.readFile(readmePath, 'utf-8');
const withTools = await updateTools(readmeContent); const withTools = await updateTools(readmeContent);
const withOptions = await updateOptions(withTools); const withOptions = await updateOptions(withTools);
await fs.promises.writeFile(readmePath, withOptions, 'utf-8'); const withConfig = await updateConfig(withOptions);
await fs.promises.writeFile(readmePath, withConfig, 'utf-8');
console.log('README updated successfully'); console.log('README updated successfully');
} }