Delete playwright-ephemeral/SKILL.md

This commit is contained in:
2026-04-10 18:09:15 -04:00
committed by GitHub
parent 69604deafd
commit 8e5f135acd
-87
View File
@@ -1,87 +0,0 @@
---
name: playwright-ephemeral
description: Provision and tear down ephemeral Playwright MCP browser sessions as Kubernetes Jobs for E2E testing.
---
# Ephemeral Playwright Browser Provisioning
Provision an ephemeral Playwright MCP browser session running in a Kubernetes Job. Use this when you need to drive a real browser for E2E or integration testing.
## Prerequisites
| Requirement | Description |
|---|---|
| `kubectl` | Must be available and configured with cluster access |
| RBAC | Agent service account needs Jobs and Services CRUD in `playwright-sessions` namespace |
| Network | Cluster networking must allow traffic from agent pod to `playwright-sessions` namespace |
## When to Use
- You need to drive a real Chromium browser (click, navigate, screenshot, scrape)
- You are running E2E or integration tests against a web application
- You need a Playwright MCP server endpoint to connect your MCP client to
## Provision a Session
Run the provision script. It creates a Kubernetes Job + Service pair and waits until the Playwright MCP server is accepting connections.
```bash
RESULT=$(bash ./playwright-ephemeral/scripts/provision.sh)
```
On success, the script prints two lines to stdout:
```
SESSION_NAME=playwright-<agent>-<uuid>
MCP_URL=http://playwright-<agent>-<uuid>.playwright-sessions.svc.cluster.local:8931/mcp
```
Extract the values:
```bash
SESSION_NAME=$(echo "$RESULT" | grep '^SESSION_NAME=' | cut -d= -f2)
MCP_URL=$(echo "$RESULT" | grep '^MCP_URL=' | cut -d= -f2)
```
### Optional Environment Variables
| Variable | Default | Description |
|---|---|---|
| `PLAYWRIGHT_NAMESPACE` | `playwright-sessions` | Kubernetes namespace for browser pods |
| `PLAYWRIGHT_TIMEOUT` | `120` | Seconds to wait for the MCP server to become ready |
| `PLAYWRIGHT_TTL` | `1800` | TTL in seconds after Job finishes (auto-cleanup) |
| `PLAYWRIGHT_DEADLINE` | `1800` | Hard ceiling in seconds for the Job (kills zombie sessions) |
| `PLAYWRIGHT_MEMORY_REQUEST` | `512Mi` | Memory request for the browser container |
| `PLAYWRIGHT_MEMORY_LIMIT` | `1Gi` | Memory limit for the browser container |
## Connect to the Session
Configure your Playwright MCP client with the returned `MCP_URL`. The endpoint speaks HTTP-based MCP transport on port 8931 at the `/mcp` path.
Example: if `MCP_URL=http://playwright-goose-a1b2c3.playwright-sessions.svc.cluster.local:8931/mcp`, point your MCP client at that URL.
## Tear Down a Session
When you are finished with the browser, tear it down:
```bash
bash ./playwright-ephemeral/scripts/teardown.sh "$SESSION_NAME"
```
This deletes both the Job and Service. If you forget, the Job self-cleans after `PLAYWRIGHT_TTL` seconds and hard-terminates after `PLAYWRIGHT_DEADLINE` seconds.
## Error Handling
| Scenario | What Happens |
|---|---|
| Pod fails to schedule | Provision script times out and exits non-zero with an error message |
| MCP server not ready in time | Provision script times out and cleans up the Job/Service before exiting |
| kubectl not found | Script exits immediately with an error |
| Namespace does not exist | Script creates the namespace automatically |
## Security Notes
- Each session runs in an isolated pod with its own network identity.
- Sessions are ephemeral — the Job TTL and active deadline prevent resource leaks.
- The browser runs with `--no-sandbox` (required in containers) and headless Chromium only.
- No data persists after teardown.