npm package: @playwright-test-runner/core
Description: Libreria per eseguire test Playwright con ricerca automatica dei test e visualizzazione report
Author: Giovanni Cannone
Latest version: 1.0.13

# Playwright Test Runner

> Libreria per eseguire test Playwright con ricerca automatica dei test e visualizzazione report.

[![npm version](https://img.shields.io/npm/v/@playwright-test-runner/core.svg)](https://www.npmjs.com/package/@playwright-test-runner/core)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

## Caratteristiche

- **Playwright Integrato** - Include Playwright, non serve installarlo separatamente
- **Ricerca Automatica** - Trova automaticamente i file di test nella cartella `tests/`
- **Report Interattivi** - Visualizzazione automatica dei risultati nel browser
- **Zero Config** - Funziona subito, nessuna configurazione richiesta
- **Setup Guidato** - Crea automaticamente la cartella tests se non esiste

## Installazione

```bash
npm install @playwright-test-runner/core
```

## Comandi Disponibili

| Comando | Descrizione |
|---------|-------------|
| `npx playwright-test` | Esegue i test e mostra il report |
| `npx playwright-report` | Mostra solo il report (senza rieseguire i test) |

## Utilizzo

### Eseguire i test

```bash
npx playwright-test
```

Questo comando:
1. Cerca i file `*.spec.ts` / `*.test.ts` nella cartella `tests/`
2. Esegue tutti i test con Playwright
3. Apre automaticamente il report nel browser

**Se la cartella `tests/` non esiste**, il comando ti chiederà se vuoi crearla automaticamente con un file di test di esempio.

### Visualizzare il report

```bash
npx playwright-report
```

Apre il report HTML dell'ultima esecuzione su `http://localhost:9323`.

### Opzioni

```bash
# Specifica una cartella test diversa
npx playwright-test --tests-dir e2e

# Specifica la root del progetto
npx playwright-test --project /path/to/project

# Mostra help
npx playwright-test --help
```

## Setup Progetto

### Struttura

```
your-project/
├── tests/                  # Cartella dei test
│   ├── example.spec.ts
│   ├── login.spec.ts
│   └── api/
│       └── users.test.ts
├── package.json
└── playwright-report/      # Generato dopo i test
```

### Esempio di test

File `tests/example.spec.ts`:

```typescript
import { test, expect } from '@playwright/test';

test('homepage has title', async ({ page }) => {
  await page.goto('https://playwright.dev/');
  await expect(page).toHaveTitle(/Playwright/);
});

test('get started link', async ({ page }) => {
  await page.goto('https://playwright.dev/');
  await page.getByRole('link', { name: 'Get started' }).click();
  await expect(page).toHaveURL(/.*intro/);
});
```

## Uso Programmatico

```typescript
import { PlaywrightTestRunner } from '@playwright-test-runner/core';

const runner = new PlaywrightTestRunner({
  projectRoot: process.cwd(),
  testsDir: 'tests'
});

// Ottieni lista dei test
const testFiles = await runner.getTestFiles();
console.log('Test trovati:', testFiles);

// Esegui i test
const result = await runner.runTests({
  reporter: 'html',
  headed: false
});

if (result.success) {
  // Mostra report
  const { url } = await runner.showReport();
  console.log('Report disponibile su:', url);
}

// Cleanup
runner.stopReportServer();
```

## Script package.json Consigliati

```json
{
  "scripts": {
    "test": "playwright-test",
    "test:report": "playwright-report"
  }
}
```

## CI/CD (GitHub Actions)

```yaml
name: E2E Tests
on: [push]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: 18

      - name: Install
        run: npm install

      - name: Install browsers
        run: npx playwright install --with-deps chromium

      - name: Run tests
        run: npx playwright-test

      - name: Upload report
        if: always()
        uses: actions/upload-artifact@v3
        with:
          name: playwright-report
          path: playwright-report/
```

## Requisiti

- **Node.js** >= 18
- **Playwright** - Incluso nella libreria

## License

MIT