Skip to main content

TSH Product Testing

Quality assurance: Playwright end-to-end tests proven stable by three or more consecutive headless runs, with any remaining flakiness reported rather than hidden, and WCAG 2.1 AA accessibility audits that report the success criterion behind every finding. The plugin covers QA, meaning does the software work and can everyone use it.

Who installs it and where​

tsh-product-testing is a discipline plugin. Install it at user scope so it follows you across projects, because your job does not change from repo to repo. The install commands and the scope prompt are on the installation page, which renders the repository README. The marketplace entry is tsh-product-testing@tsh-agentic-collections.

What it ships​

SkillInvokeWhat it does
auditing-accessibility/tsh-product-testing:auditing-accessibilityAudits UI against WCAG 2.1 AA and reports violations with their success criterion: semantic structure and heading order, keyboard operability and focus management, ARIA correctness, colour contrast, text resize and reflow, and axe-core automated scanning. Use when auditing a page or component for accessibility or triaging axe output. Building accessible components is tsh-stack-frontend's ensuring-accessibility.
writing-playwright-e2e-tests/tsh-product-testing:writing-playwright-e2e-testsTSH's standard for Playwright end-to-end tests: mapping acceptance criteria to scenarios, Page Object structure, user-visible locators, auto-waiting instead of manual timeouts, unique test data for parallel runs, mocking only external boundaries, and a bounded debug loop with explicit iteration limits and flake detection. Use when writing, debugging, reviewing or de-flaking E2E tests.
AgentMentionModelWhat it does
e2e-engineer@tsh-product-testing:e2e-engineersonnetWrites, debugs and de-flakes Playwright end-to-end tests from acceptance criteria or a plan task — maps criteria to scenarios, follows the project's existing Page Object and locator conventions, and proves stability with repeated headless runs before reporting. Use for delegated E2E test tasks, or when a suite is flaky and needs diagnosis.

Skills are invoked as /tsh-product-testing:<skill> and the agent as @tsh-product-testing:e2e-engineer.

Conventions the plugin holds to​

  • A failing test is either a wrong test or a real bug, and deciding which is the work. Nothing here weakens an assertion to reach green: an application defect becomes test.fixme('BUG: ...') plus a reported bug.
  • One green run is not evidence. A test is done after 3+ consecutive headless passes.
  • Every accessibility finding names its WCAG success criterion, so it can be prioritized and verified rather than argued about.
  • The project's existing test conventions outrank these defaults. Both skills start by establishing them.
  • Never bypass authentication. Real sign-in with environment-supplied credentials is fine; seeding or faking session state is not.

Auditing versus building accessibility​

Accessibility is split by outcome. auditing-accessibility lives here and reports violations in an existing page, component or flow. Implementing accessible components belongs to ensuring-accessibility in tsh-stack-frontend, the stack plugin that installs with the repo.

Verifying that implemented UI matches its design is a separate concern and does not live in this plugin. According to the plugin README, that work belongs with product engineering, alongside the implementation loop it feeds.

Prerequisites and dependencies​

  • Playwright CLI. Live-page exploration runs on the Playwright CLI. Its snapshot is the accessibility tree that getByRole resolves against, so it is how a locator is confirmed before it is committed to a test. Have playwright-cli on the machine: npm install -g @playwright/cli@latest, or a project-local install reached via npx playwright cli — never npx playwright-cli, which fetches a deprecated package. The skill's own preflight checks the local install with npx --no-install playwright cli --version. See the Playwright CLI integration page for the tool. The workflow checks availability before its first exploration and, when the CLI is missing, asks whether to install it or wait. A subagent, which cannot ask, reports the missing prerequisite instead.
  • MCP servers. The plugin ships no .mcp.json and no hooks/hooks.json. Playwright API documentation comes from context7, which tsh-core bundles; for Playwright, query the library ID /microsoft/playwright.dev directly.
  • tsh-core. e2e-engineer reads acceptance criteria from a Jira issue key using the Atlassian MCP tools that tsh-core bundles, and reports written for people outside the team go through /tsh-core:writing-technical-documents. Without tsh-core, supply acceptance criteria directly instead of by issue key.

Changelog​

Release notes are on the changelog page.