e2e-playwright

Playwright E2E Testing Skill

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 "e2e-playwright" with this command: npx skills add 7spade/black-tortoise/7spade-black-tortoise-e2e-playwright

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.

  1. 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(); });

  1. 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); });

  1. 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).

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

material-design-3

No summary provided by upstream source.

Repository SourceNeeds Review
General

architecture-ddd

No summary provided by upstream source.

Repository SourceNeeds Review
General

webapp-testing

No summary provided by upstream source.

Repository SourceNeeds Review