openclaw

openclaw-docker-e2e-authoring

"Author OpenClaw Docker E2E and live provider Docker lanes."

openclaw 389,068 81,764 Updated 3mo ago
GitHub

Install

npx skillscat add openclaw/openclaw/openclaw-docker-e2e-authoring

Install via the SkillsCat registry.

About this skill

This skill provides guidance for authoring Docker-based end-to-end test lanes for OpenClaw, covering both deterministic fakes and live provider tests. It solves the problem of inconsistent Docker E2E authoring by enforcing rules around helper placement, payload assertions, media handling, and chat completion contracts. Developers should use it when adding or modifying Docker E2E lanes, release-path Docker tests, or live-provider Docker proof.

SKILL.md

OpenClaw Docker E2E Authoring

Use this when adding or changing Docker E2E lanes, release-path Docker tests,
or live-provider Docker proof.

Lane Choice

  • Deterministic Docker: fake the dependency/server and assert the exact runtime
    contract crossing the boundary.
  • Live Docker: use real provider credentials/model only when user-visible
    behavior needs the real service.
  • Prefer both when they prove different risks: deterministic for byte/payload
    routing, live for actual provider behavior.

Authoring Rules

  • Test-only helpers live in test/helpers or scripts/e2e/lib/<lane>/, not
    src/**, unless production imports them.
  • Package-installed app runs from /app; mount only explicit harness/helper
    paths read-only.
  • Fake servers should log boundary requests as JSONL and clients should assert
    the real dependency payload, not just process success.
  • Add the package script and scripts/lib/docker-e2e-scenarios.mjs lane in the
    same change.
  • If a lane installs a plugin from npm, default the spec via env so published
    and local override paths are both testable.

Media And Vision

  • Expected answer must exist only in pixels or provider output being tested.
  • Use neutral filenames, neutral prompts, and no metadata leaks.
  • Random bitmap/OCR tokens reuse the repo OCR-safe alphabet 24567ACEF unless
    the test owns a stronger glyph set.
  • Make the expected answer unique per run when proving real image
    understanding.

chat.send E2E

  • Require chat.send to return status: "started" and a string runId.
  • Wait for completion with agent.wait.
  • Assert final user-visible text via chat.history when event ordering is not
    the behavior under test.
  • Keep originating channel/account metadata only when the bug path needs queued
    inbound/channel context.

Verification

Run the smallest proof that covers the touched lane:

pnpm exec oxfmt --write <changed files>
node --check <new .mjs files>
bash -n <new .sh files>
node scripts/run-vitest.mjs test/scripts/docker-e2e-plan.test.ts
OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:<lane>

For real-provider lanes, run the matching live Docker script after deterministic
Docker is green. Finish with $autoreview before commit/PR.

Categories