e2e-playwright

📁 7spade/black-tortoise 📅 14 days ago
9
总安装量
5
周安装量
#31563
全站排名
安装命令
npx skills add https://github.com/7spade/black-tortoise --skill e2e-playwright

Agent 安装分布

opencode 5
gemini-cli 5
claude-code 5
replit 5
codex 5
mcpjam 4

Skill 文档

Playwright E2E Testing Skill

🎯 Purpose

Provide patterns for robust end-to-end testing in the Black-Tortoise ecosystem, ensuring that user journeys and architectural boundaries are verified.

🛠️ Core Patterns

1. Test Organization

  • Base URL: Defined in playwright.config.ts.
  • Naming: .spec.ts files under e2e/.
  • Parallelism: Tests should be independent to allow parallel execution.

2. Firebase Emulator Integration

Tests should run against local emulators to ensure speed and isolation.

// e2e/auth.spec.ts
import { test, expect } from '@playwright/test';

test.beforeEach(async ({ page }) => {
  // Reset emulator state or seed data via GQL mutations
  await page.goto('/');
});

test('should login successfully', async ({ page }) => {
  await page.getByLabel('Email').fill('test@example.com');
  await page.getByLabel('Password').fill('password123');
  await page.getByRole('button', { name: 'Login' }).click();
  
  await expect(page.getByRole('heading', { name: 'Dashboard' })).toBeVisible();
});

3. Architecture Guard Verification

Verification of the architecture:gate can be automated as part of the test suite or CI.

// Example of checking for console errors or network violations
test('should not have console errors', async ({ page }) => {
  const logs: string[] = [];
  page.on('console', msg => {
    if (msg.type() === 'error') logs.push(msg.text());
  });
  
  await page.goto('/workspace');
  expect(logs.length).toBe(0);
});

4. Custom Selectors (MANDATORY)

  • REQUIRED: Use data-testid for stable selection of components.
  • REQUIRED: Prefer ARIA roles (getByRole, getByLabel) to ensure a11y.
  • FORBIDDEN: Selecting by brittle CSS classes or deep DOM structures.

🚀 Execution Commands

  • Run all: pnpm e2e
  • UI Mode: pnpm exec playwright test --ui
  • Debug: pnpm exec playwright test --debug

🔐 Architecture Gate (dependency-cruiser)

Black-Tortoise uses dependency-cruiser to enforce DDD boundaries.

  • Rule: Presentation cannot import Domain directly.
  • Rule: Application cannot import Infrastructure.
  • Check: pnpm run architecture:gate should be part of the pre-commit hook (Husky).