From jmchilton
Run Galaxy Playwright E2E tests. Works from Galaxy root or `packages/test_selenium`.
How this skill is triggered — by the user, by Claude, or both
Slash command
/jmchilton:galaxy-playwrightThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Run Galaxy Playwright E2E tests. Works from Galaxy root or `packages/test_selenium`.
Run Galaxy Playwright E2E tests. Works from Galaxy root or packages/test_selenium.
/galaxy-playwright [test_path]
Examples:
/galaxy-playwright - show status of Galaxy server and dev server/galaxy-playwright test_login.py - run all login tests/galaxy-playwright test_workflow_editor.py::TestWorkflowEditor::test_data_input - run specific testDetect mode based on current working directory:
packages/test_selenium (has pyproject.toml with galaxy-test-selenium)run.sh, lib/galaxy_test/)Before running tests, verify:
.venv/
/galaxy-bootstrap skill to set it upPlaywright installed
source .venv/bin/activate && playwright --versionsource .venv/bin/activate && playwright installuv run playwright --versionuv run playwright installConfig file exists at ~/galaxy_selenium_context.yml
test -f ~/galaxy_selenium_context.yml && echo "EXISTS" || echo "MISSING"cp lib/galaxy_test/selenium/jupyter/galaxy_selenium_context.yml.sample ~/galaxy_selenium_context.yml
echo "Created ~/galaxy_selenium_context.yml - please edit with your credentials"
cp galaxy_test/selenium/jupyter/galaxy_selenium_context.yml.sample ~/galaxy_selenium_context.yml
echo "Created ~/galaxy_selenium_context.yml - please edit with your credentials"
Galaxy running on port 8080
lsof -i :8080 | grep LISTEN or curl -s http://localhost:8080/api/versionNO_PROXY=* GALAXY_SKIP_CLIENT_BUILD=1 GALAXY_RUN_WITH_TEST_TOOLS=1 sh run.sh --skip-wheels &
Vite dev server running on port 5173 (optional but recommended for client changes)
lsof -i :5173 | grep LISTENmake client-dev-server & (from Galaxy root)Tests are located in lib/galaxy_test/selenium/.
source .venv/bin/activate
GALAXY_TEST_FILE_DIR=$(pwd)/test-data \
GALAXY_TEST_DRIVER_BACKEND=playwright \
GALAXY_TEST_TIMEOUT_MULTIPLIER=2 \
GALAXY_TEST_SELENIUM_HEADLESS=0 \
GALAXY_TEST_END_TO_END_CONFIG=~/galaxy_selenium_context.yml \
pytest lib/galaxy_test/selenium/$ARGUMENTS -v \
-W ignore::DeprecationWarning \
-W ignore::PendingDeprecationWarning \
--tb=short
Tests are located in galaxy_test/selenium/.
GALAXY_TEST_FILE_DIR=$(cd ../.. && pwd)/test-data \
GALAXY_TEST_DRIVER_BACKEND=playwright \
GALAXY_TEST_TIMEOUT_MULTIPLIER=2 \
GALAXY_TEST_SELENIUM_HEADLESS=0 \
GALAXY_TEST_END_TO_END_CONFIG=~/galaxy_selenium_context.yml \
uv run pytest galaxy_test/selenium/$ARGUMENTS -v \
-W ignore::DeprecationWarning \
-W ignore::PendingDeprecationWarning \
--tb=short
| Variable | Value | Purpose |
|---|---|---|
GALAXY_TEST_FILE_DIR | Galaxy root | Base dir for test files |
GALAXY_TEST_DRIVER_BACKEND | playwright | Use Playwright instead of Selenium |
GALAXY_TEST_TIMEOUT_MULTIPLIER | 2 | Increase timeouts for slower machines |
GALAXY_TEST_SELENIUM_HEADLESS | 0 | Show browser (1=headless) |
GALAXY_TEST_END_TO_END_CONFIG | ~/galaxy_selenium_context.yml | Config with login creds |
GALAXY_TEST_EXTERNAL | http://localhost:8080/ | Target Galaxy URL (set if using dev server on different port) |
The config file ~/galaxy_selenium_context.yml should contain:
local_galaxy_url: http://localhost:8080
login_email: [email protected]
login_password: mycoolpassw0rd
# admin_api_key: your_api_key # for admin tests
.venv exists, if not run /galaxy-bootstrap~/galaxy_selenium_context.yml exists, if not create from sample and warn user| File | Tests |
|---|---|
test_login.py | Login/logout, registration |
test_workflow_editor.py | Workflow editor UI |
test_workflow_run.py | Running workflows |
test_uploads.py | File uploads |
test_history_panel.py | History panel interactions |
test_tool_form.py | Tool form interactions |
npx claudepluginhub jmchilton/claude-jmchilton-plugins --plugin jmchiltonGuides web app testing strategy: test pyramid (unit/integration/component/E2E), framework selection (Vitest/Playwright/Jest), coverage rules, mocking boundaries, and execution.
Automates browser tasks and E2E testing with Playwright: auto-detects dev servers, generates scripts for pages, forms, screenshots, responsive design, UX validation, login flows, cross-browser checks in TypeScript/JavaScript/Python projects.
Implements end-to-end testing workflows with Playwright for browser automation, visual regression, cross-browser testing, and CI/CD integration.