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.
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.
activate_skill(name="e2e-testing-expert") → activate_skill(name="github-actions-pro") → activate_skill(name="ui-ux-pro").bun x playwright test and verify results via the Trace Viewer for any flaky failures.As of 2026, CSS/XPath selectors are considered legacy and fragile.
getByRole, getByText, or getByLabel.ui-ux-pro to fix the accessibility tree instead of adding data-testid.tests/models/.expect(page).toHaveScreenshot() for critical UI components.mask property to prevent false positives.trace: 'on-first-retry' in CI to capture full DOM snapshots and network logs for every failure.@axe-core/playwright to run injectAxe and checkA11y during key user flows.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();
}
}
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
});
});
page.waitForTimeout(). Use web-first assertions like expect().toBeVisible().page.route() to mock them.BrowserContext for every test.--shard=1/3) for large suites.page.route() for stable tests.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.Updated: January 23, 2026 - 20:50
npx skills add YuniorGlez/e2e-testing-expert下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer