run-windows-e2e

SkillCloud & infra

This skill lets your AI run Windows end-to-end tests locally, using virtual machines that are provisioned in AWS. Once added, your AI can run MSI install tests or Fleet Automation and installer tests for the datadog-agent project.

Available today. Use it from your connected AI after setup.

Add the skill, then ask your AI to run the Windows end-to-end tests you need, such as an MSI install test or a Fleet Automation test.

Then ask your AI: use the run-windows-e2e skill

What your AI can do with it

  • Run Windows end-to-end tests from your local setup
  • Run MSI install tests on AWS-provisioned virtual machines
  • Run Fleet Automation and installer tests on AWS-provisioned virtual machines
  • Use virtual machines created in AWS as the test environment

What this skill tells your AI

The instructions your AI receives, as published by datadog/datadog-agent in .agents/skills/run-windows-e2e/SKILL.md and read by ahel’s review.

Run Windows E2E tests from test/new-e2e/tests/windows/ or test/new-e2e/tests/installer/windows/.

Detailed reference material lives in references/ next to this file — read the relevant one when a step calls for it rather than duplicating it here:

Instructions

Step 1 — Parse $ARGUMENTS

Determine:

  • Suite: which test suite to run (e.g. install-test, service-test, agent-package, install-script). If not provided, ask the user.
  • Test function: specific TestXxx function. Most suites expect exactly one test per run — ask the user which one if not specified.
  • Artifact source: --build pipeline (default), --build local, or --build release; pass --pipeline-id <id> through if given.
  • Stable/previous version (upgrade tests only): if the user specifies a version to upgrade from, plan a second setup-env run with --prefix STABLE_AGENT in Step 3 (see references/running.md "Upgrade tests").
  • Branch: if the user mentions a branch ("from main"), pass --branch <name> to setup-env. The default is the current git branch, which may have no pipelines if it's a local feature branch.

Map suite names to Go package paths:

SuitePackage path
install-test./test/new-e2e/tests/windows/install-test
service-test./test/new-e2e/tests/windows/service-test
fips-test./test/new-e2e/tests/windows/fips-test
domain-test./test/new-e2e/tests/windows/domain-test
installer / Fleet Automation (agent-package, install-script, install-exe, ddot, apm-inject, …)./test/new-e2e/tests/installer/windows

The installer / Fleet Automation tests are all one flat package (the suites/<package>/ subdirectories were flattened in #47161) — pick the area by test function with -run (e.g. TestAgentUpgrades, TestInstallScript, TestDDOTExtensionViaMSI, TestAPMInjectInstalls).

If the user gives a partial name or test function, search with Glob/Grep under test/new-e2e/tests/windows/ and test/new-e2e/tests/installer/windows/ to resolve it.

Step 2 — Check prerequisites

test -f ~/.test_infra_config.yaml && echo "EXISTS" || echo "MISSING"
pulumi version 2>/dev/null || echo "MISSING"

If either is missing, offer to run dda inv e2e.setup and wait for the user to complete its interactive prompts. If prerequisites exist but devMode is not set, mention that devMode: true reuses VMs across runs (much faster for iterative development). Full detail in references/setup.md.

Step 3 — Resolve artifact environment variables

Run setup-env with --fmt json to capture the required env vars (no shell eval needed — prepend the parsed pairs inline to go test in Step 5).

# From a pipeline (most common)
dda inv new-e2e-tests.setup-env --build pipeline --fmt json [--branch <branch>] [--pipeline-id <id>]

# From a local build (run `dda inv msi.build` first, + `msi.package-oci` for installer/OCI tests)
dda inv new-e2e-tests.setup-env --build local --fmt json

For upgrade tests, run a second time with --prefix STABLE_AGENT and merge the vars in. GitLab token handling, local-build details, and the STABLE_AGENT flow are in references/running.md.

Step 4 — Check for stale state (dev mode only)

If devMode: true and the user is rerunning, the previous VM may still have the agent installed. Ask whether they've cleaned up (MSI tests: uninstall the agent; installer tests: datadog-installer.exe purge). See references/running.md "Clean state between runs".

Step 5 — Build and confirm the go test command

go test -v -timeout 30m -tags test <package-path> -run <TestFunction>$

Two rules to apply (rationale in references/running.md): anchor the -run regex with $ at both suite and subtest level, and use the exact package path with no trailing /... (or output won't stream).

Show the full command to the user and confirm before running.

Step 6 — Run the test

Warn the user that AWS SSO auth may open a browser window when the test starts (the test pauses until login completes), and that a non-sandbox AWS_PROFILE will cause auth errors — advise unset AWS_PROFILE.

Run with run_in_background: true since tests provision real AWS VMs. Provisioning takes a few minutes; once the VM is up, SSH becomes available within ~60s (Linux) / ~180s (Windows). If SSH is not available within those windows, troubleshoot before assuming the test is still running normally (see references/vm-access.md).

Step 7 — Report results

When the test completes:

  • Report pass/fail.
  • On failure, point the user to ~/e2e-output/latest/ (crash dumps, agent/installer logs, event logs). If devMode is on, the VM is still up — offer to help RDP/SSH in via references/vm-access.md.
  • For Pulumi lock errors or AWS auth errors, see references/troubleshooting.md.

Signals

GitHub stars
4k
Forks
1k
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
run-windows-e2e
Source
github.com/datadog/datadog-agent