claude-playwright
Version:
Seamless integration between Claude Code and Playwright MCP for efficient browser automation and testing
134 lines • 4.67 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TEMPLATES = void 0;
exports.selectTemplate = selectTemplate;
exports.listAvailableTemplates = listAvailableTemplates;
exports.getTemplateFiles = getTemplateFiles;
exports.getTemplateDependencies = getTemplateDependencies;
const chalk_1 = __importDefault(require("chalk"));
exports.TEMPLATES = {
minimal: {
name: 'Minimal Template',
description: 'Basic setup for quick start with essential components',
files: [
'CLAUDE.md',
'playwright.config.ts',
'src/pages/base/BasePage.ts',
'src/tests/example.spec.ts'
],
features: [
'Basic Page Object Model',
'Essential Playwright configuration',
'Claude MCP integration',
'Example test'
],
dependencies: {
'@playwright/test': '^1.40.0'
},
devDependencies: {
'typescript': '^5.0.0'
}
},
enterprise: {
name: 'Enterprise Template',
description: 'Full featured setup with CI/CD pipeline and best practices',
files: [
'CLAUDE.md',
'playwright.config.ts',
'docker-compose.yml',
'.github/workflows/tests.yml',
'src/pages/base/BasePage.ts',
'src/pages/base/BaseComponent.ts',
'src/fixtures/AuthFixture.ts',
'src/utils/DataGenerator.ts',
'src/tests/example.spec.ts'
],
features: [
'Advanced Page Object Model with Components',
'Docker containerization',
'GitHub Actions CI/CD',
'Authentication fixtures',
'Test data generation',
'Visual regression testing',
'Performance monitoring'
],
dependencies: {
'@playwright/test': '^1.40.0',
'dotenv': '^16.0.0'
},
devDependencies: {
'typescript': '^5.0.0',
'@types/node': '^20.0.0'
}
},
testing: {
name: 'Testing Template',
description: 'Test-focused setup with advanced utilities and fixtures',
files: [
'CLAUDE.md',
'playwright.config.ts',
'src/pages/base/BasePage.ts',
'src/fixtures/BaseFixture.ts',
'src/utils/TestHelpers.ts',
'src/utils/MockData.ts',
'src/tests/example.spec.ts'
],
features: [
'Advanced test fixtures',
'Test utilities and helpers',
'Mock data generation',
'Enhanced reporting',
'Test parallelization optimized',
'Custom assertions',
'API testing integration'
],
dependencies: {
'@playwright/test': '^1.40.0',
'faker': '^8.0.0'
},
devDependencies: {
'typescript': '^5.0.0',
'@types/faker': '^8.0.0'
}
}
};
async function selectTemplate(templateName) {
const template = exports.TEMPLATES[templateName];
if (!template) {
throw new Error(`Unknown template: ${templateName}`);
}
console.log(chalk_1.default.blue(`\n=� Selected Template: ${template.name}`));
console.log(chalk_1.default.gray(`${template.description}\n`));
console.log(chalk_1.default.cyan('Features:'));
template.features.forEach(feature => {
console.log(chalk_1.default.gray(` " ${feature}`));
});
return template;
}
async function listAvailableTemplates() {
console.log(chalk_1.default.blue('\n=� Available Templates:\n'));
for (const [key, template] of Object.entries(exports.TEMPLATES)) {
console.log(chalk_1.default.cyan(`${key}:`));
console.log(chalk_1.default.white(` ${template.name}`));
console.log(chalk_1.default.gray(` ${template.description}`));
console.log(chalk_1.default.gray(` Features: ${template.features.length} included\n`));
}
}
function getTemplateFiles(templateName) {
const template = exports.TEMPLATES[templateName];
return template ? template.files : [];
}
function getTemplateDependencies(templateName) {
const template = exports.TEMPLATES[templateName];
if (!template) {
return { dependencies: {}, devDependencies: {} };
}
return {
dependencies: template.dependencies,
devDependencies: template.devDependencies
};
}
//# sourceMappingURL=template-selector.js.map
;