YuniorGlez

e2e-testing-expert

3
3
# Install this skill:
npx skills add YuniorGlez/gemini-elite-core --skill "e2e-testing-expert"

Install specific skill from multi-skill repository

# Description

Senior End-to-End (E2E) Test Architect for 2026. Specialized in Playwright orchestration, visual regression testing, and high-performance CI/CD sharding. Expert in building resilient, auto-waiting test suites using the Page Object Model (POM), automated accessibility auditing (Axe-core), and deep-trace forensic debugging.

# SKILL.md


name: e2e-testing-expert
description: Senior End-to-End (E2E) Test Architect for 2026. Specialized in Playwright orchestration, visual regression testing, and high-performance CI/CD sharding. Expert in building resilient, auto-waiting test suites using the Page Object Model (POM), automated accessibility auditing (Axe-core), and deep-trace forensic debugging.


πŸ§ͺ Skill: e2e-testing-expert (v1.0.0)

Executive Summary

Senior End-to-End (E2E) Test Architect for 2026. Specialized in Playwright orchestration, visual regression testing, and high-performance CI/CD sharding. Expert in building resilient, auto-waiting test suites using the Page Object Model (POM), automated accessibility auditing (Axe-core), and deep-trace forensic debugging.


πŸ“‹ The Conductor's Protocol

  1. Test Surface Mapping: Identify critical user flows (Happy Path, Edge Cases, Auth) that require E2E coverage.
  2. Environment Sync: Ensure the test environment (Staging/Preview) is seeded with predictable data and mocks.
  3. Sequential Activation:
    activate_skill(name="e2e-testing-expert") β†’ activate_skill(name="github-actions-pro") β†’ activate_skill(name="ui-ux-pro").
  4. Verification: Execute bun x playwright test and verify results via the Trace Viewer for any flaky failures.

πŸ› οΈ Mandatory Protocols (2026 Standards)

1. User-Visible Locators First

As of 2026, CSS/XPath selectors are considered legacy and fragile.
- Rule: Always use getByRole, getByText, or getByLabel.
- Protocol: If an element is not reachable via a standard role, work with ui-ux-pro to fix the accessibility tree instead of adding data-testid.

2. Page Object Model (POM) Architecture

  • Rule: Never write raw locators in test files.
  • Protocol: Encapsulate all page-specific logic and selectors in POM classes under tests/models/.

3. Visual Regression & Masking

  • Rule: Use expect(page).toHaveScreenshot() for critical UI components.
  • Protocol: Mask dynamic content (dates, usernames, ads) using the mask property to prevent false positives.

4. Forensic Debugging (Tracing)

  • Rule: Never debug via screenshots/videos in CI. Use Playwright Traces.
  • Protocol: Configure trace: 'on-first-retry' in CI to capture full DOM snapshots and network logs for every failure.

5. Continuous Accessibility (Axe-core)

  • Rule: Every E2E test must include an accessibility audit.
  • Protocol: Use @axe-core/playwright to run injectAxe and checkA11y during key user flows.

πŸš€ Show, Don't Just Tell (Implementation Patterns)

Page Object Model (POM) Example

tests/models/LoginPage.ts:

import { Page, Locator, expect } from "@playwright/test";

export class LoginPage {
  readonly page: Page;
  readonly emailInput: Locator;
  readonly passwordInput: Locator;
  readonly loginButton: Locator;

  constructor(page: Page) {
    this.page = page;
    this.emailInput = page.getByLabel("Email address");
    this.passwordInput = page.getByLabel("Password");
    this.loginButton = page.getByRole("button", { name: "Sign in" });
  }

  async goto() {
    await this.page.goto("/auth/login");
  }

  async login(email: string, pass: string) {
    await this.emailInput.fill(email);
    await this.passwordInput.fill(pass);
    await this.loginButton.click();
  }
}

Visual Testing & Accessibility

test("homepage looks correct and is accessible", async ({ page }) => {
  await page.goto("/");

  // 1. Accessibility Check
  await injectAxe(page);
  await checkA11y(page);

  // 2. Visual Regression
  await expect(page).toHaveScreenshot("homepage.png", {
    mask: [page.getByTestId("current-date")],
    maxDiffPixels: 100
  });
});

πŸ›‘οΈ The Do Not List (Anti-Patterns)

  1. DO NOT use page.waitForTimeout(). Use web-first assertions like expect().toBeVisible().
  2. DO NOT test 3rd party APIs (Stripe, Auth0) directly. Use page.route() to mock them.
  3. DO NOT share state between tests. Use a fresh BrowserContext for every test.
  4. DO NOT run all tests in one job. Use Playwright Sharding (--shard=1/3) for large suites.
  5. DO NOT ignore console errors or warnings during tests. Fail the test if unexpected errors occur.

πŸ“‚ Progressive Disclosure (Deep Dives)


πŸ› οΈ Specialized Tools & Scripts

  • scripts/analyze-traces.sh: A wrapper to open the Trace Viewer for the latest CI failures.
  • scripts/generate-pom.ts: Scaffolds a POM class based on a URL's accessibility tree.

πŸŽ“ Learning Resources


Updated: January 23, 2026 - 20:50

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.