# Run Devicelab With Led

> Run DeviceLab tests for Flutter PRs using LUCI's `led` CLI tool. Use when asked to run, launch, try, or deflake a post-submit or devicelab test against a PR using `led`.

- Skill: `flutter/run-devicelab-with-led` (Agent Skill)
- Install (CLI): `npx skillmds@latest add flutter/run-devicelab-with-led`
- Raw SKILL.md: https://api.skillmd.com/api/skills/flutter/run-devicelab-with-led/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: flutter (https://skillmd.com/u/flutter)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/flutter/run-devicelab-with-led

---


<!--
Host assumptions:
    Installed and on path:
        * led (from depot_tools)
        * git
        * gh
    Had authentication setup:
        * led
        * gh
        * gcert / glogin (SSO auth required for recipes repository git operations)
-->

# Running DeviceLab Tests with `led`

This skill guides running post-submit and DeviceLab tests for pull requests (PRs) using LUCI's `led` CLI tool. For additional context, see [docs/infra/Running-Devicelab-Tests-For-PR.md](../../../docs/infra/Running-Devicelab-Tests-For-PR.md).

## Prerequisites

1. **`led` tool**: Must be installed (via `depot_tools`) and available in your `PATH`. Verify via `led auth-info`.
2. **SSO authentication**: Verify valid SSO / LOAS credentials via `gcertstatus` or `glogin status`. If expired, instruct the user to run `glogin` or `gcert`.
3. **`recipes` repository** (when including `led edit-recipe-bundle`): If testing local recipe changes or recipe-only PRs, commands containing `led edit-recipe-bundle` must be executed from the root of a local checkout of the Flutter [`recipes`](https://flutter.googlesource.com/recipes) repository (`git clone https://flutter.googlesource.com/recipes`).

## Workflow

### 1. Gather Inputs based on PR Type

Collect the following required arguments:
* **`PR_NUMBER`**: The pull request number (e.g., `123456`).
* **`PRESUBMIT_TEST`**: The exact name of the LUCI staging builder to run (e.g., `Windows_mokey hot_mode_dev_cycle_win__benchmark` or `Mac_ios microbenchmarks_ios`).

### 2. Execute `led` Pipeline

If you are using `led edit-recipe-bundle` to test local recipe modifications, navigate to the root of your local `recipes` repository checkout (`$CWD` is packaged by `led edit-recipe-bundle`). If only testing without recipe edits, `led edit-recipe-bundle` can either be run from a `recipes` checkout or omitted.

Run the command pipeline corresponding to the PR type:

#### Command

```bash
led get-builder 'luci.flutter.staging:PRESUBMIT_TEST' \
  | led edit -pa git_ref='refs/pull/PR_NUMBER/head' \
  | led edit -pa git_url='https://github.com/flutter/flutter' \
  | led edit-recipe-bundle \
  | led launch
```

### 3. Report Launched Task Details

`led launch` outputs details about the launched build, including Swarming / LUCI task links. Provide the resulting URL to the user so they can track execution progress and examine logs.

## Example

- **User Prompt**: "Run the devicelab test `Windows_mokey hot_mode_dev_cycle_win__benchmark` for framework PR 12345 with led."
- **Action**: Run the `led` command (navigate to local `recipes/` directory if using `led edit-recipe-bundle` for local recipe edits):
  ```bash
  led get-builder 'luci.flutter.staging:Windows_mokey hot_mode_dev_cycle_win__benchmark' \
    | led edit -pa git_ref='refs/pull/12345/head' \
    | led edit -pa git_url='https://github.com/flutter/flutter' \
    | led edit-recipe-bundle \
    | led launch
  ```

