init

Initialize Playwright Project

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "init" with this command: npx skills add alirezarezvani/claude-skills/alirezarezvani-claude-skills-init

Initialize Playwright Project

Set up a production-ready Playwright testing environment. Detect the framework, generate config, folder structure, example test, and CI workflow.

Steps

  1. Analyze the Project

Use the Explore subagent to scan the project:

  • Check package.json for framework (React, Next.js, Vue, Angular, Svelte)

  • Check for tsconfig.json → use TypeScript; otherwise JavaScript

  • Check if Playwright is already installed (@playwright/test in dependencies)

  • Check for existing test directories (tests/ , e2e/ , tests/ )

  • Check for existing CI config (.github/workflows/ , .gitlab-ci.yml )

  1. Install Playwright

If not already installed:

npm init playwright@latest -- --quiet

Or if the user prefers manual setup:

npm install -D @playwright/test npx playwright install --with-deps chromium

  1. Generate playwright.config.ts

Adapt to the detected framework:

Next.js:

import { defineConfig, devices } from '@playwright/test';

export default defineConfig({ testDir: './e2e', fullyParallel: true, forbidOnly: !!process.env.CI, retries: process.env.CI ? 2 : 0, workers: process.env.CI ? 1 : undefined, reporter: [ ['html', { open: 'never' }], ['list'], ], use: { baseURL: 'http://localhost:3000', trace: 'on-first-retry', screenshot: 'only-on-failure', }, projects: [ { name: "chromium", use: { ...devices['Desktop Chrome'] } }, { name: "firefox", use: { ...devices['Desktop Firefox'] } }, { name: "webkit", use: { ...devices['Desktop Safari'] } }, ], webServer: { command: 'npm run dev', url: 'http://localhost:3000', reuseExistingServer: !process.env.CI, }, });

React (Vite):

Vue/Nuxt:

Angular:

No framework detected:

  • Omit webServer block

  • Set baseURL from user input or leave as placeholder

  1. Create Folder Structure

e2e/ ├── fixtures/ │ └── index.ts # Custom fixtures ├── pages/ │ └── .gitkeep # Page object models ├── test-data/ │ └── .gitkeep # Test data files └── example.spec.ts # First example test

  1. Generate Example Test

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

test.describe('Homepage', () => { test('should load successfully', async ({ page }) => { await page.goto('/'); await expect(page).toHaveTitle(/.+/); });

test('should have visible navigation', async ({ page }) => { await page.goto('/'); await expect(page.getByRole('navigation')).toBeVisible(); }); });

  1. Generate CI Workflow

If .github/workflows/ exists, create playwright.yml :

name: "playwright-tests"

on: push: branches: [main, dev] pull_request: branches: [main, dev]

jobs: test: timeout-minutes: 60 runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: lts/* - name: "install-dependencies" run: npm ci - name: "install-playwright-browsers" run: npx playwright install --with-deps - name: "run-playwright-tests" run: npx playwright test - uses: actions/upload-artifact@v4 if: ${{ !cancelled() }} with: name: "playwright-report" path: playwright-report/ retention-days: 30

If .gitlab-ci.yml exists, add a Playwright stage instead.

  1. Update .gitignore

Append if not already present:

/test-results/ /playwright-report/ /blob-report/ /playwright/.cache/

  1. Add npm Scripts

Add to package.json scripts:

{ "test:e2e": "playwright test", "test:e2e:ui": "playwright test --ui", "test:e2e:debug": "playwright test --debug" }

  1. Verify Setup

Run the example test:

npx playwright test

Report the result. If it fails, diagnose and fix before completing.

Output

Confirm what was created:

  • Config file path and key settings

  • Test directory and example test

  • CI workflow (if applicable)

  • npm scripts added

  • How to run: npx playwright test or npm run test:e2e

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

aws-solution-architect

No summary provided by upstream source.

Repository SourceNeeds Review
General

social-media-analyzer

No summary provided by upstream source.

Repository SourceNeeds Review
General

senior-frontend

No summary provided by upstream source.

Repository SourceNeeds Review
General

senior-backend

No summary provided by upstream source.

Repository SourceNeeds Review