soleprint init commit
This commit is contained in:
119
station/tools/tester/playwright/README.md
Normal file
119
station/tools/tester/playwright/README.md
Normal file
@@ -0,0 +1,119 @@
|
||||
# Playwright Test Integration
|
||||
|
||||
Frontend test support for ward/tools/tester.
|
||||
|
||||
## Features
|
||||
|
||||
- Discover Playwright tests (.spec.ts files)
|
||||
- Execute tests with Playwright runner
|
||||
- Capture video recordings and screenshots
|
||||
- Stream artifacts via API endpoints
|
||||
- Inline video/screenshot playback in test results
|
||||
|
||||
## Directory Structure
|
||||
|
||||
```
|
||||
ward/tools/tester/
|
||||
├── playwright/
|
||||
│ ├── discovery.py # Find .spec.ts tests
|
||||
│ ├── runner.py # Execute Playwright tests
|
||||
│ └── artifacts.py # Store and serve artifacts
|
||||
├── frontend-tests/ # Synced Playwright tests (gitignored)
|
||||
└── artifacts/ # Test artifacts (gitignored)
|
||||
├── videos/
|
||||
├── screenshots/
|
||||
└── traces/
|
||||
```
|
||||
|
||||
## Test Metadata Format
|
||||
|
||||
Add Gherkin metadata to Playwright tests via JSDoc comments:
|
||||
|
||||
```typescript
|
||||
/**
|
||||
* Feature: Reservar turno veterinario
|
||||
* Scenario: Verificar cobertura en zona disponible
|
||||
* Tags: @smoke @coverage @frontend
|
||||
* @description Coverage check shows message for valid address
|
||||
*/
|
||||
test('coverage check shows message for valid address', async ({ page }) => {
|
||||
await page.goto('http://localhost:3000/turnero');
|
||||
await page.fill('[name="address"]', 'Av Santa Fe 1234, CABA');
|
||||
await page.click('button:has-text("Verificar")');
|
||||
|
||||
await expect(page.locator('.coverage-message')).toContainText('Tenemos cobertura');
|
||||
});
|
||||
```
|
||||
|
||||
## Playwright Configuration
|
||||
|
||||
Tests should use playwright.config.ts with video/screenshot capture:
|
||||
|
||||
```typescript
|
||||
import { defineConfig } from '@playwright/test';
|
||||
|
||||
export default defineConfig({
|
||||
use: {
|
||||
// Capture video on failure
|
||||
video: 'retain-on-failure',
|
||||
// Capture screenshot on failure
|
||||
screenshot: 'only-on-failure',
|
||||
},
|
||||
|
||||
// Output directory for artifacts
|
||||
outputDir: './test-results',
|
||||
|
||||
reporter: [
|
||||
['json', { outputFile: 'results.json' }],
|
||||
['html'],
|
||||
],
|
||||
});
|
||||
```
|
||||
|
||||
## API Endpoints
|
||||
|
||||
### Stream Artifact
|
||||
```
|
||||
GET /tools/tester/api/artifact/{run_id}/{filename}
|
||||
```
|
||||
|
||||
Returns video/screenshot file for inline playback.
|
||||
|
||||
### List Artifacts
|
||||
```
|
||||
GET /tools/tester/api/artifacts/{run_id}
|
||||
```
|
||||
|
||||
Returns JSON list of all artifacts for a test run.
|
||||
|
||||
## Artifact Display
|
||||
|
||||
Videos and screenshots are displayed inline in test results:
|
||||
|
||||
**Video:**
|
||||
```html
|
||||
<video controls>
|
||||
<source src="/tools/tester/api/artifact/{run_id}/test-video.webm" type="video/webm">
|
||||
</video>
|
||||
```
|
||||
|
||||
**Screenshot:**
|
||||
```html
|
||||
<img src="/tools/tester/api/artifact/{run_id}/screenshot.png">
|
||||
```
|
||||
|
||||
## Integration with Test Runner
|
||||
|
||||
Playwright tests are discovered alongside backend tests and can be:
|
||||
- Run individually or in batches
|
||||
- Filtered by Gherkin metadata (feature, scenario, tags)
|
||||
- Filtered by pulse variables (role, stage, state)
|
||||
|
||||
## Future Enhancements
|
||||
|
||||
- Playwright trace viewer integration
|
||||
- Test parallelization
|
||||
- Browser selection (chromium, firefox, webkit)
|
||||
- Mobile device emulation
|
||||
- Network throttling
|
||||
- Test retry logic
|
||||
Reference in New Issue
Block a user