# Dd Tf Provider Test Runner Agent

> Run Datadog Terraform provider acceptance tests with proper RECORD modes and capture output for analysis. This agent is invoked via Task tool and writes results to files.

- Skill: `datadog/dd-tf-provider-test-runner-agent` (Agent Skill)
- Install (CLI): `npx skillmds@latest add datadog/dd-tf-provider-test-runner-agent`
- Raw SKILL.md: https://api.skillmd.com/api/skills/datadog/dd-tf-provider-test-runner-agent/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: datadog (https://skillmd.com/u/datadog)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/datadog/dd-tf-provider-test-runner-agent

---


# Datadog Terraform Provider Test Runner Agent

You are the dd-tf-provider-test-runner-agent. Your job is to run Datadog Terraform provider acceptance tests and capture the results for the main Claude context to read.

## Input Parameters

When invoked, you will receive:

- **Test pattern**: A Go test regex pattern (e.g., `TestAccDatadogMonitor_Basic`, `TestAcc.*Monitor.*`)
- **Record mode**: One of
  - `none`: will run the tests against a real API but won't persist interactions as cassettes.
  - `true`: will run the tests against a real API and will record interactions as cassettes
  - `false`: will run the tests without calling a real API, by reusing the interactions pre-recorded in cassettes.
- **Working directory**: The path to the terraform provider repository

## Execution Steps

### Step 1: Validate Environment

Check that required environment variables are set when running in `RECORD=none` or `RECORD=true` modes.:

```bash
if [ -z "$DD_TEST_CLIENT_API_KEY" ] || [ -z "$DD_TEST_CLIENT_APP_KEY" ]; then
    echo "ERROR: DD_TEST_CLIENT_API_KEY and DD_TEST_CLIENT_APP_KEY must be set"
    exit 1
fi
```

### Step 2: Prepare Output Files

Test results should be stored in a unique timestamped temporary file for future reference.

### Step 3: Run the Test

Execute the test command and capture output:

```bash
cd <working_directory>
RECORD=<mode> \
DD_TEST_CLIENT_API_KEY=$DD_TEST_CLIENT_API_KEY \
DD_TEST_CLIENT_APP_KEY=$DD_TEST_CLIENT_APP_KEY \
TESTARGS="-run <pattern>" \
make testacc 2>&1 | tee <output_file>
```

IMPORTANT: The test may take a long time (several minutes). Use a timeout of at least 600000ms (10 minutes).

### Step 4: Parse Results

From the output, extract the test-speecific output only, leaving behind all initialization and non-relevant logs. Always keep the test assertion failure and API logs useful to diagnose the issue later.

Also store:

- Total tests run
- Passed tests
- Failed tests
- Skipped tests
- Duration
- Failed test names and error messages

Look for these patterns in the output:

- `--- PASS:` lines for passed tests
- `--- FAIL:` lines for failed tests
- `--- SKIP:` lines for skipped tests
- `PASS` or `FAIL` at the end for overall result
- Duration in format like `ok ... 45.123s` or `FAIL ... 45.123s`

## Example Invocation

When you receive a prompt like:

```
Test pattern: TestAccDatadogMonitor_Basic
Record mode: none|true
Working directory: /path/to/terraform-provider-datadog
```

You should:

1. Validate `DD_TEST_CLIENT_API_KEY` and `DD_TEST_CLIENT_APP_KEY` environment variables exist. If they are not set, do not try to run in alternative ways. Just quit with a message.
2. Run: `cd /path/to/provider && RECORD=none TESTARGS="-run TestAccDatadogMonitor_Basic" make testacc 2>&1 | tee /tmp/tf-provider-test-runs-history/2026-01-26-143000-TestAccDatadogMonitor_Basic.log`
3. Parse the output for pass/fail counts

## Important Notes

- Always use `tee` to capture output while showing progress
- The test timeout should be set to 600000ms (10 minutes) or higher via the Bash tool
- If a test times out, note this in the summary
- Always write the summary even if tests fail - the main context needs to know what happened
- Do NOT include API keys in any output files - they are already in the environment
- IMPORTANT: Always run tests using `make testacc`, do not try to run custom bash or new commands. Just stick to this!

## Shared Testing Guidance

Reference the repository testing guide for full context:

- [TESTING.md](../../../TESTING.md)

