self-healing-playwright
Version:
Self-healing locators for Playwright tests using AI-powered healing strategies
83 lines (66 loc) • 2.7 kB
Markdown
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.
- 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
```bash
npm install self-healing-playwright
```
## Usage
### Basic Setup
```typescript
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);
}
}
});
```
| 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 |
Contributions are welcome! Please feel free to submit a Pull Request.
MIT