io.github.fastslack/e2e-runner
OCI · DOCKER.IO/FASTSLACK/E2E-RUNNER-MCP:1.3.0 · 2 COMPONENTS · SCANNED AUG 3
JSON-driven E2E test runner with parallel Chrome pool execution and 16 MCP tools.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security0
- Malware scan not yet available for this package.Unverified
- CVE data not yet available for this package.Unverified
- Install-script risk not yet assessed.Unverified
- Dependency-health data not yet available.Unverified
Provenance & Transparency32
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: no license is declared. See how to fix → Fail
- Actively maintained (last published 143 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability63
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3483 tokens (~217/item across 16 items; 16 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management23
- Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
oci · docker.io/fastslack/e2e-runner-mcp:1.3.0
claude mcp add fastslack-e2e-runner -- docker run --rm -i docker.io/fastslack/e2e-runner-mcp:1.3.0
codex mcp add fastslack-e2e-runner -- docker run --rm -i docker.io/fastslack/e2e-runner-mcp:1.3.0
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"fastslack-e2e-runner": {
"type": "local",
"command": [
"docker",
"run",
"--rm",
"-i",
"docker.io/fastslack/e2e-runner-mcp:1.3.0"
],
"enabled": true
}
}
} mcp_servers:
fastslack-e2e-runner:
command: "docker"
args: ["run", "--rm", "-i", "docker.io/fastslack/e2e-runner-mcp:1.3.0"] {
"mcpServers": {
"fastslack-e2e-runner": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"docker.io/fastslack/e2e-runner-mcp:1.3.0"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 2 Aug 26 +3
- Stability: unverified → 0.20 ▲ functional
- 31 Jul 26 −4
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 27 Jul 26 +30
- Tool coverage: unverified → 100 ▲ functional
- First check of Schema quality: excellent functional
- First check of Schema quality: fail functional
- First check of Tool coverage: 100 functional
- First check of Schema quality: fail functional
- 26 Jul 26 8
First indexed and scored.
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Analysed oci/docker.io/fastslack/e2e-runner-mcp:1.3.0
Provenance none
Ecosystem: oci · Outcome: none
Reason: no_attestation
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
e2e_analyze ~324
Analyze a page's structure and return all interactive elements (forms, buttons, links, navigation, tables, modals, etc.) with their CSS selectors, plus suggested test scaffolds. One call replaces the entire screenshot→guess-selectors→retry cycle.
| Name | Type | Req | Description |
|---|---|---|---|
| authStorageKey | string | — | localStorage key name for the auth token (default: "accessToken") |
| authToken | string | — | JWT or auth token to inject into localStorage before navigating (for authenticated pages) |
| cwd | string | — | Absolute path to the project root directory. Claude Code should pass its current working directory. |
| delay | number | — | Wait N milliseconds after page load before analyzing (default: 0) |
| includeScreenshot | boolean | — | Include a screenshot alongside the JSON analysis (default: true) |
| maxElements | number | — | Max elements per category (default: 50). Lower values produce smaller responses. |
| scope | string | — | CSS selector to limit analysis to a section (e.g. "#sidebar", ".modal-content") |
| selector | string | — | Wait for this CSS selector before analyzing |
| url | string | yes | Full URL to analyze (e.g. "https://example.com" or "http://host.docker.internal:3000/dashboard") |
| waitUntil | string | — | Navigation wait strategy. "auto" (default) tries networkidle2 first with a short timeout, then falls back to domcontentloaded + delay for SPA/WebSocket apps. Use "domcontentloaded" for apps with pers… |
No output schema declared.
No examples provided.
e2e_capture ~276
Capture a screenshot of any URL on demand. Connects to the Chrome pool, navigates to the URL, takes a screenshot, and returns the image with its ss:HASH.
| Name | Type | Req | Description |
|---|---|---|---|
| authStorageKey | string | — | localStorage key name for the auth token (default: "accessToken") |
| authToken | string | — | JWT or auth token to inject into localStorage before navigating (for authenticated pages) |
| cwd | string | — | Absolute path to the project root directory. Claude Code should pass its current working directory. |
| delay | number | — | Wait N milliseconds after page load before capturing (default: 0) |
| filename | string | — | Output filename (default: capture-<timestamp>.png) |
| fullPage | boolean | — | Capture full scrollable page (default: false) |
| selector | string | — | Wait for this CSS selector before capturing |
| url | string | yes | Full URL to capture (e.g. "https://example.com" or "http://host.docker.internal:3000/dashboard") |
| waitUntil | string | — | Navigation wait strategy. "auto" (default) tries networkidle2 first with a short timeout, then falls back to domcontentloaded + delay for SPA/WebSocket apps. Use "domcontentloaded" for apps with pers… |
No output schema declared.
No examples provided.
e2e_create_module ~217
Create a reusable module for E2E tests. Modules encapsulate repeated action sequences referenced via { "$use": "module-name", "params": {...} }. Good module candidates: auth setup, page navigation, tab clicking, opening sidebars/drawers, form fill sequences, cleanup routines. Modules can compose — a module can $use other modules. Params use {{paramName}} mustache syntax in action fields. Extract a module when you see the same 2+ action sequence in multiple tests.
| Name | Type | Req | Description |
|---|---|---|---|
| actions | array | yes | Sequential actions with {{param}} placeholders for substitution |
| cwd | string | — | Absolute path to the project root directory. |
| description | string | — | Human-readable description of what this module does |
| name | string | yes | Module name (used in $use references, e.g. "auth-jwt", "navigate-patient") |
| params | object | — | Parameter definitions. Each key is a param name, value is { required: boolean, default?: string, description?: string } |
No output schema declared.
No examples provided.
e2e_create_test ~1,266
Create a new E2E test JSON file. IMPORTANT: prefer built-in actions over evaluate blocks. ## Action selection guide (use instead of evaluate) **Clicking elements by text** — DON'T write evaluate to find+click elements: click: { type: "click", text: "Submit" } — searches button, a, [role=tab], span, etc. click_regex: { type: "click_regex", text: "save|guardar" } — regex match, case-insensitive click_menu_item: { type: "click_menu_item", text: "Delete" } — [role=menuitem], .MenuItem, etc. click_option: { type: "click_option", text: "Option A" } — [role=option] in dropdowns click_chip: { type: "click_chip", text: "Active" } — MUI Chip / tag elements click_icon: { type: "click_icon", value: "edit" } — SVG/icon by data-testid, aria-label, class click_in_context:{ type: "click_in_context", text: "Row text", selector: "button" } — child within container **Asserting text presence/absence** — DON'T write evaluate with body.includes(): assert_text: { type: "assert_text", text: "Welcome" } — text IS on page (case-sensitive). Uses: text assert_no_text: { type: "assert_no_text", text: "Error" } — text is NOT on page. Uses: text assert_text_in: { type: "assert_text_in", selector: "[class*='Drawer']", text: "profesional|doctor" } — scoped regex in container (case-insensitive default). Uses: selector + text (+ value:"exact") **Asserting elements** — DON'T write evaluate to count or check visibility: assert_visible: { type: "assert_visible", selector: ".modal" } — Uses: selector (NOT text) assert_not_visible: { type: "assert_not_visible", selector: ".loader" } — Uses: selector (NOT text) assert_count: { type: "assert_count", selector: "input", value: ">= 2" } — Uses: selector + value assert_element_text: { type: "assert_element_text", selector: "h1", text: "Dashboard" } — Uses: selector + text assert_matches: { type: "…
| Name | Type | Req | Description |
|---|---|---|---|
| cwd | string | — | Absolute path to the project root directory. Claude Code should pass its current working directory. |
| hooks | object | — | Optional hooks: beforeAll, afterAll, beforeEach, afterEach (each an array of actions). Note: beforeAll runs on a SEPARATE page that is closed before tests — use beforeEach for auth/setup. |
| name | string | yes | Suite file name without .json extension (e.g. "login-flow", "issue-1743-sidebar") |
| tests | array | yes | Array of test objects with { name, actions, expect } |
No output schema declared.
No examples provided.
e2e_dashboard_restart ~93
Restart the E2E Runner web dashboard. Stops the current instance and starts a new one, optionally with a new cwd or port. Useful when switching projects or when the dashboard was started from another session.
| Name | Type | Req | Description |
|---|---|---|---|
| cwd | string | — | Absolute path to the project root directory. Claude Code should pass its current working directory. |
| port | number | — | Dashboard port (default: same port or 8484) |
No output schema declared.
No examples provided.
e2e_dashboard_start ~77
Start the E2E Runner web dashboard. Provides a real-time UI for running tests, viewing results, screenshots, history, and pool status.
| Name | Type | Req | Description |
|---|---|---|---|
| cwd | string | — | Absolute path to the project root directory. Claude Code should pass its current working directory. |
| port | number | — | Dashboard port (default 8484) |
No output schema declared.
No examples provided.
e2e_dashboard_stop ~20
Stop the E2E Runner web dashboard.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
e2e_issue ~207
Fetch a GitHub/GitLab issue and prepare E2E test generation. Returns issue details and a prompt for test creation. Use mode "verify" to auto-generate and run tests (requires ANTHROPIC_API_KEY).
| Name | Type | Req | Description |
|---|---|---|---|
| authStorageKey | string | — | localStorage key name for the auth token (default: "accessToken") |
| authToken | string | — | JWT or auth token to inject into localStorage before running tests (for authenticated apps) |
| cwd | string | — | Absolute path to the project root directory. Claude Code should pass its current working directory. |
| mode | string | — | prompt = return issue + prompt for Claude Code to create tests (default). verify = auto-generate tests via Claude API and run them. |
| testType | string | — | Test category: 'e2e' (default) for UI-driven tests, 'api' for backend API tests |
| url | string | yes | Issue URL (GitHub or GitLab) |
No output schema declared.
No examples provided.
e2e_learnings ~168
Query the E2E learning system for insights about test stability, flaky tests, selector health, page health, API health, error patterns, and trends. Builds knowledge across runs.
| Name | Type | Req | Description |
|---|---|---|---|
| cwd | string | — | Absolute path to the project root directory. Claude Code should pass its current working directory. |
| days | number | — | Analysis window in days (default: 30) |
| query | string | yes | What to query: "summary" (full overview), "flaky" (flaky tests), "selectors" (selector stability), "pages" (page health), "apis" (API health), "errors" (error patterns), "trends" (7-day trend). Drill… |
No output schema declared.
No examples provided.
e2e_list ~48
List all available E2E test suites with their test names and counts.
| Name | Type | Req | Description |
|---|---|---|---|
| cwd | string | — | Absolute path to the project root directory. Claude Code should pass its current working directory. |
No output schema declared.
No examples provided.
e2e_neo4j ~55
Manage the Neo4j knowledge graph container for E2E learnings. Requires Docker.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Container lifecycle action |
| cwd | string | — | Absolute path to the project root directory. |
No output schema declared.
No examples provided.
e2e_network_logs ~203
Query network request/response logs for a specific test run. Returns filtered logs from SQLite. Use the runDbId from e2e_run results to drill down into network details on demand.
| Name | Type | Req | Description |
|---|---|---|---|
| errorsOnly | boolean | — | Only return requests with status >= 400 |
| includeBodies | boolean | — | Include request/response bodies (default: false, implies includeHeaders) |
| includeHeaders | boolean | — | Include request/response headers (default: false) |
| method | string | — | Filter by HTTP method (GET, POST, etc.) |
| runDbId | number | yes | The run database ID (returned by e2e_run in the summary) |
| statusMax | number | — | Maximum HTTP status code |
| statusMin | number | — | Minimum HTTP status code (e.g. 400 for errors only) |
| testName | string | — | Filter by test name |
| urlPattern | string | — | Regex pattern to match against request URLs |
No output schema declared.
No examples provided.
e2e_pool_status ~59
Get the status of the Chrome pool (browserless/chrome). Shows availability, running sessions, capacity, and queued requests.
| Name | Type | Req | Description |
|---|---|---|---|
| cwd | string | — | Absolute path to the project root directory. Claude Code should pass its current working directory. |
No output schema declared.
No examples provided.
e2e_run ~252
Run E2E browser tests. Specify "all" to run every suite, "suite" for a specific suite, or "file" for a JSON file path. Returns structured results with pass/fail status, duration, and error details.
| Name | Type | Req | Description |
|---|---|---|---|
| all | boolean | — | Run all test suites from the tests directory |
| baseUrl | string | — | Override the base URL for this run |
| concurrency | number | — | Number of parallel workers (default from config) |
| cwd | string | — | Absolute path to the project root directory. Claude Code should pass its current working directory. |
| failOnNetworkError | boolean | — | Fail tests when network requests fail (e.g. ERR_CONNECTION_REFUSED). Default: false. |
| file | string | — | Absolute or relative path to a JSON test file |
| retries | number | — | Number of retries for failed tests |
| suite | string | — | Suite name to run (e.g. "auth", "01-login"). Matches with or without numeric prefix. |
| verificationStrictness | string | — | Visual verification strictness. strict: no ambiguity allowed, any doubt = FAIL. moderate: reasonable judgment (default). lenient: only fail on clear contradictions. |
No output schema declared.
No examples provided.
e2e_screenshot ~86
Retrieve a screenshot by its hash (e.g. ss:a3f2b1c9). Returns the image. Hashes are shown in the dashboard next to screenshots.
| Name | Type | Req | Description |
|---|---|---|---|
| hash | string | yes | Screenshot hash with or without ss: prefix (e.g. "ss:a3f2b1c9" or "a3f2b1c9") |
No output schema declared.
No examples provided.
e2e_vars ~132
Manage project variables stored in SQLite. Variables can be referenced in test JSON as {{var.KEY}}. Supports project-wide and per-suite scoping.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action to perform: set (upsert), get (one key), list (all), delete |
| cwd | string | — | Absolute path to the project root directory. |
| key | string | — | Variable name (required for set, get, delete) |
| scope | string | — | Scope: "project" (default) or a suite name for suite-specific override |
| value | string | — | Variable value (required for set) |
No output schema declared.
No examples provided.