Run Bot Framework Web Chat HTML tests in Docker/Selenium Grid. Use when: running __tests__/html2, debugging failing HTML tests, updating snapshots, checking grid health, or cleaning leaked Selenium sessions.
npx skills add https://github.com/microsoft/BotFramework-WebChat --skill webchat-html-tests
Run the HTML test harness, keep Selenium Grid healthy, and debug failures without keeping all of the operational detail in the skill body.
__tests__/html2 for a branch or PRUse the bundled script instead of pasting long Docker commands.
For a focused test run, keep the default scale of 2 Chrome nodes:
./.github/skills/webchat-html-tests/scripts/start-grid.sh
For a full run, match Jest's 4 workers:
CHROME_SCALE=4 ./.github/skills/webchat-html-tests/scripts/start-grid.sh
python3 ./.github/skills/webchat-html-tests/scripts/wait-for-grid.py
Stop if the script times out or if the node summary does not show ready nodes.
Run the full suite:
./.github/skills/webchat-html-tests/scripts/run-html-tests.sh
Run a focused HTML test with a regex anchored to the exact file:
./.github/skills/webchat-html-tests/scripts/run-html-tests.sh "__tests__/html2/activity/message-status\.html$"
Update snapshots for an expected visual change:
./.github/skills/webchat-html-tests/scripts/run-html-tests.sh --update "__tests__/html2/activity/message-status\.html$"
python3 ./.github/skills/webchat-html-tests/scripts/cleanup-grid-sessions.py
If leaked sessions remain, clean them before the next Jest run or the grid can stall.
If dist files return 404s after a local build, restart webchat2:
docker compose -f docker-compose-wsl2.yml restart webchat2
If a failure is not obvious, load the reference docs before changing code:
docker compose -f docker-compose-wsl2.yml down
--updatenpm run precommit passes before opening the PRToolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
Run Playwright tests at scale with cloud-hosted browsers and integrated Azure portal reporting.
Browser debugging, performance profiling, and automation via Chrome DevTools MCP. Use when user says "debug this page", "take a screenshot", "check network requests", "profile performance", "inspect console errors", or "analyze page load". Do NOT use for full E2E test suites (use playwright-skill) or non-browser debugging.
QA-test a website or web app and return a 1-5 quality score (5 = flawless, 1 = broken) with evidence. Use when the user wants to test, QA, evaluate, score, or "check how good" a site, page, flow, or app — including a local dev server (e.g. "qa test localhost:5173", "does the checkout work?", "rate this landing page"). Drives a real Browser Use cloud browser, tunneling localhost automatically.
Tests in real browsers via Chrome DevTools MCP. Use when building or debugging anything that runs in a browser. Use when you need to inspect the DOM, capture console errors, analyze network requests, profile performance, or verify visual output with real runtime data. Requires the chrome-devtools MCP server to be configured.
Always use browser-harness for any web interaction: automation, scraping, testing, or site/app work.
Run a browser-based UI review of the WordPress.com Help Center across multiple surfaces, looking for visual and behavioral issues. Use when asked to test the Help Center UI.
Use when writing E2E tests with Playwright, setting up test infrastructure, or debugging flaky browser tests. Invoke to write test scripts, create page objects, configure test fixtures, set up reporters, add CI integration, implement API mocking, or perform visual regression testing. Trigger terms: Playwright, E2E test, end-to-end, browser testing, automation, UI testing, visual testing, Page Object Model, test flakiness.
Take microsoft/webchat-html-tests from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.