# uip tm pack

> Syntax and options for `uip tm pack`, which packages an external Playwright test project into a UiPath automation package for Test Manager.

`uip tm pack` builds a UiPath automation package (`.nupkg`) from an external test project so Test Manager can execute it. Given a Playwright project's root, it discovers the project's `test()` blocks (including `describe()` groups and annotations), then bundles the project's source files and test metadata into a package ready to publish to the Orchestrator Package Feed. Every automation that [`testsets run`](./uip-test-manager-testsets.md) later executes for a Playwright test case is produced by this command.

## Synopsis

```text
uip tm pack --project-path <path> --type playwright [--project-key <key>] [--name <name>] [--package-version <version>] [-o <dir>] [--author <author>] [--description <desc>] [--no-create-test-cases] [--dry-run] [--output json]
```

`--project-key` is required unless `--no-create-test-cases` is passed.

All verbs honor the [global options](./global-options.md) and the standard [exit codes](./exit-codes.md). `uip tm pack` accepts `--tenant <name>` and `--log-level <level>` (default `Information`); there is no `-t` short alias for `--tenant` on this command.

## Arguments

None.

## Options

| Flag | Description |
|---|---|
| `--project-path <path>` | **Required.** Path to the Playwright project root (for example, `.` for the current directory). The root must contain `package.json`, `package-lock.json`, and a `playwright.config` file. |
| `--type <type>` | **Required.** Automation type being packaged. Only `playwright` is accepted; no other automation type routes through this verb. |
| `--project-key <key>` | An existing Test Manager project key. **Required unless `--no-create-test-cases` is passed.** When test-case auto-creation is on (the default), matching test cases are auto-created in this project and the Playwright automation is auto-linked to each one — no manual `link-automation` or Select Automation step needed. Uppercase letters and digits only (`^[A-Z0-9]+$`). |
| `-n, --name <name>` | Name of the resulting package. Defaults to the project folder name. |
| `--package-version <version>` | Version string for the package (for example, `1.0.0`). Defaults to `1.0.0`. |
| `-o, --output <dir>` | Output directory for the generated `.nupkg`. Defaults to `.uipath`. |
| `--author <author>` | Defaults to `"UiPath Developer"`. |
| `--description <desc>` | No default. |
| `--no-create-test-cases` | Disables test-case auto-creation. The only mode in which `--project-key` may be omitted; the package's automations then become available for manual selection instead. |
| `--dry-run` | Runs the same validation as a real pack, but writes nothing. |
| `--output json` | Emits machine-readable JSON to stdout (package name/version, output path, discovered test count) instead of human-readable text. |

:::note
npm is the only supported package manager for this command — the project root must contain a `package-lock.json`.
:::

## Example

```bash
uip tm pack \
  --project-path . \
  --type playwright \
  --project-key SWAG \
  --name SwagLabsDemo \
  --package-version 1.0.0 \
  -o .packages \
  --output json
```

## Data shape

```json
{
  "Result": "Success",
  "Code": "ExternalTestPack",
  "Data": {
    "Package": "SwagLabsDemo@1.0.0",
    "Output": ".packages/SwagLabsDemo.1.0.0.nupkg",
    "TestCount": 12
  }
}
```

:::note
After packaging, publish the `.nupkg` to your tenant's Orchestrator Package Feed — manually in Orchestrator, by dropping it into a watched folder, or with [`uip or packages upload`](./uip-orchestrator-packages.md) — before it can be selected in Test Manager.
:::

## Related

- [testcases](./uip-test-manager-testcases.md) — see the warning there before using `link-automation` on any test case created by this command.
- [testsets](./uip-test-manager-testsets.md) — `testsets run` executes the automations this command produces.
- [uip or packages](./uip-orchestrator-packages.md) — `packages upload` publishes the generated `.nupkg` to the Orchestrator Package Feed.

## See also

- [Test Manager overview](./uip-test-manager.md)
- [uip solution pack](./uip-solution-pack.md) and [uip rpa pack](./uip-rpa-pack.md) — precedent for how a "pack" verb is documented for other resource types.
