self-healing-playwright
v1.0.0
Published
Self-healing locators for Playwright tests using AI-powered healing strategies
Maintainers
Readme
Self-Healing Playwright
A powerful npm package that enhances Playwright tests with AI-powered self-healing capabilities. This package automatically fixes failing locators in your Playwright tests using various healing strategies.
Features
- AI-powered locator healing using Groq API
- Multiple healing strategies (text, role, xpath, css)
- Configurable confidence thresholds
- Caching mechanism for improved performance
- Detailed reporting and debugging capabilities
Installation
npm install self-healing-playwrightUsage
Basic Setup
import { createHealingEngine } from 'self-healing-playwright';
import { test } from '@playwright/test';
// Initialize the healing engine
const healingEngine = createHealingEngine({
groqApiKey: 'your-groq-api-key', // Required
healingStrategies: ['text', 'role', 'xpath', 'css'],
confidenceThreshold: 0.8,
maxRetries: 3,
debug: true,
reportPath: './healing-reports'
});
// Use in your tests
test('example test', async ({ page }) => {
try {
await page.click('button:has-text("Submit")');
} catch (error) {
// The healing engine will automatically attempt to fix the locator
const result = await healingEngine.heal({
originalLocator: 'button:has-text("Submit")',
testFile: 'example.test.ts',
lineNumber: 10,
domSnapshot: await page.content(),
page: page,
error: error
});
if (result.success) {
await page.click(result.newLocator);
}
}
});Configuration Options
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| groqApiKey | string | - | Required. Your Groq API key |
| healingStrategies | string[] | ['text', 'role', 'xpath', 'css'] | Array of healing strategies to use |
| confidenceThreshold | number | 0.8 | Minimum confidence score required for a healing attempt |
| maxRetries | number | 3 | Maximum number of healing attempts |
| retryInterval | number | 1000 | Time in ms between retry attempts |
| cacheEnabled | boolean | true | Enable/disable caching of healing results |
| cacheTTL | number | 3600 | Cache time-to-live in seconds |
| maxCacheSize | number | 1000 | Maximum number of cache entries |
| debug | boolean | false | Enable debug logging |
| reportPath | string | './healing-reports' | Path to store healing reports |
| cacheResults | boolean | true | Whether to cache healing results |
| excludePatterns | string[] | [] | Patterns to exclude from healing |
| includePatterns | string[] | [] | Patterns to include for healing |
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT
