Skip to content

mocks/

Mock contracts live as YAML files under mocks/, conventionally named after the action with slashes replaced by dashes: actions-checkout-v4.yml.

uses: actions/setup-node@v4
description: Synthesizes setup-node outputs without touching the network
inputs:
node-version:
required: false
default: "20"
# Scalar shorthand is accepted: <name>: <value>
cache: npm
outputs:
node-version: "20.11.1"
cache-hit: "true"
durationMs: 350
KeyDescription
usesThe action reference this contract matches. Exactly one of uses or stepId is required.
stepIdMatch a specific step id instead of an action reference.
descriptionFree-text note shown in tooling.
inputsExpected inputs. Each entry is a declaration (description, required, default), a scalar shorthand treated as the default, or a bare name.
outputsOutputs the mocked step returns. Values are coerced to strings.
durationMsSimulated duration for the step.

At run time a mocked step validates required inputs against the action’s real action.yml and returns the declared outputs, so ${{ steps.<id>.outputs.* }} expressions keep working downstream.

Generate contracts with overwire seed-mocks, including --from-run to capture outputs a real run produced, or overwire resolve --contract for a single action.

overwire.io

Overwire is not affiliated with, endorsed by, or sponsored by GitHub, Inc., Microsoft Corporation, or Docker, Inc. GitHub and GitHub Actions are trademarks of GitHub, Inc.