Agent skill

Gui Integration Test

by warpdotdev in warpdotdev/warp

GUI desktop app only. An agent skill from warpdotdev/warp.

AGPL-3.0Auto-check passedTesting & QA

Install Gui Integration Test

skills CLI
$ npx skills add warpdotdev/warp --skill gui-integration-test -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install warpdotdev/warp gui-integration-test --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/warpdotdev/warp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/gui-integration-test .claude/skills/gui-integration-test && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
gui-integration-test
GitHub stars
65k
Used in
1 other repo
Token cost
~5.1k tokens
SKILL.md length
2,526 words
Files
1
Skills in repo
46
Repo updated
First seen
Licence
AGPL-3.0

At a glance

GUI desktop app only. An agent skill from warpdotdev/warp.

  • Works in 3 steps: Wait for bootstrap first → Clear the bootstrapped blocks if block… → Use helper command runners
  • Adding a new integration test
  • SKILL.md covers When an integration test is…, Framework map, How the framework actually… and Where to put a new test, plus 6 more sections
  • Calls cargo

What it does

Gui Integration Test is an agent skill from warpdotdev/warp. GUI desktop app only. Writes, runs, and debugs Warp integration tests using the custom Builder/TestStep framework in crates/integration. Use when adding a new integration test, fixing a failing integration test, wiring a test into the manual runner or nextest suite, or verifying end-to-end UI and terminal behavior in Warp.

Its SKILL.md is about 5.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering Integration testing. The repository describes itself as: Warp is an agentic development environment, born out of the terminal. The licence is AGPL-3.0.

When your agent uses it

  • Adding a new integration test
  • Fixing a failing integration test
  • Wiring a test into the manual runner
  • Verifying end-to-end UI and terminal behavior in Warp

Example prompts

  • “/gui-integration-test”

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Wait for bootstrap first
  2. Clear the bootstrapped blocks if block indices matter
  3. Use helper command runners

What it can do on your machine

Read from SKILL.md and the folder at commit f571865. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • cargo

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Gui Integration Test loads about 5.1k tokens when it runs. Until then it costs about 87 tokens; SKILL.md has 2,526 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~87
When it runs · the whole SKILL.md, loaded when a task matches
~5.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from warpdotdev/warp at commit f571865, republished under its AGPL-3.0 licence (© warpdotdev). 2,526 words, ~5,128 tokens.

Download SKILL.mdSave it as .claude/skills/gui-integration-test/SKILL.md (or your agent's skills folder).
name
gui-integration-test
description
GUI desktop app only. Writes, runs, and debugs Warp integration tests using the custom Builder/TestStep framework in `crates/integration`. Use when adding a new integration test, fixing a failing integration test, wiring a test into the manual runner or nextest suite, or verifying end-to-end UI and terminal behavior in Warp.

Warp Integration Tests

Scope — GUI desktop app only. This skill applies to Warp's GUI desktop front-end (the app/ crate on the WarpUI pixel/GPU framework). It does not apply to the headless TUI front-end (crates/warp_tui; cell-grid TuiElement library under crates/warpui_core/src/elements/tui), which has its own components, tests, and change-verification workflow. For TUI work, see the tui-ui-guidelines, tui-testing, and tui-verify-change skills instead.

Use this skill for Rust integration tests in Warp's custom framework under crates/integration/.

These are not ordinary unit tests. They boot a real Warp app instance, give it an isolated test home directory, drive it with synthetic UI and terminal events, and poll assertions until success or timeout.

When an integration test is the right tool

Integration tests are the most expensive tests in the repo. They boot the app, they are orders of magnitude slower than a unit test, and they are the most likely to go flaky. Write one when the risk you are covering genuinely lives between components:

  • Real terminal/PTY and shell-integration behavior, especially across bash, zsh, and fish.
  • Wiring and configuration: settings, keybindings, and user preferences actually taking effect end to end.
  • Cross-component flows a unit test cannot see — command palette into editor into terminal, focus and pane management, tab/window lifecycle.
  • Input and rendering paths that only exist once a real app (and sometimes a real display) is running.
  • Regressions for user-visible bugs that escaped unit tests.

Do not reach for an integration test when:

  • The logic is deterministic and reachable in-process. Push it into a unit test (rust-unit-tests); it will run in milliseconds and point straight at the failure.
  • You are re-covering branch logic a unit test already covers. This harness is for the seams between components, not for re-testing conditionals at full app-boot cost.
  • You only need TUI rendering. That is tui-testing — this harness does not drive the TUI at all.
  • What you actually want is a screenshot or a manual look. Use computer_use or the gui-integration-test-video skill instead of attaching weak assertions to a full app boot.

If a behavior is hard to reach from a unit test only because of how the code is structured, prefer fixing the structure over writing a slow test around it.

Framework map

The core pieces are:

  • crates/integration/src/bin/integration.rs
    • Manual integration test runner binary.
    • Registers test names to Builder factories.
    • Runs exactly one named test per invocation.
  • crates/integration/tests/common/mod.rs
    • The outer Rust test harness used by cargo test and cargo nextest.
    • Shells out to the integration binary.
    • Forwards a limited set of env vars (PATH, RUST_*, WARP_*, WARPUI_*, WGPU_*, display-related vars).
    • Re-runs tests up to 10 times when the integration binary exits with the special rerun code.
  • crates/integration/src/test.rs
    • Module hub for integration tests.
    • Add new test modules here and pub use their functions so the runner can see them.
  • crates/integration/tests/integration/ui_tests.rs
    • List of UI-oriented integration tests that nextest should run.
  • crates/integration/tests/integration/shell_integration_tests.rs
    • List of tests that must run against every shell or a specific shell matrix.
  • crates/integration/src/builder.rs
    • Warp-specific wrapper around the lower-level WarpUI integration builder.
    • Sets default timeout, hermetic home directory, shell rc files, user prefs, and real-display mode when requested.
  • crates/warpui_core/src/integration/driver.rs
    • Executes steps, handles retries, precondition reruns, screenshots, video capture, artifact export, and on_finish.
  • crates/warpui_core/src/integration/step.rs
    • Defines TestStep, input/event APIs, assertion polling, step-to-step data passing, and screenshot/recording hooks.
  • app/src/integration_testing/
    • High-level helpers and assertions for common Warp behaviors.
    • Prefer these helpers over raw low-level event plumbing whenever they fit.

How the framework actually runs a test

  1. A Rust test from crates/integration/tests/integration/*.rs calls run_integration_test("test_name").
  2. That harness launches the integration binary with the test name.
  3. The binary in crates/integration/src/bin/integration.rs looks up the name in register_tests(), builds the Builder, and turns it into a TestDriver.
  4. Builder::build(...) creates an isolated temp directory, points HOME at it, writes minimal rc files, and initializes file-backed user preferences.
  5. The driver runs each TestStep in order:
    • setup callbacks
    • synthetic events
    • actions
    • assertion polling until success or timeout
  6. If an assertion returns PreconditionFailed, the binary exits with the rerun code and the outer harness retries the whole test.
  7. On success, failure, or cancellation, the driver can run on_finish and export artifacts/runtime tags.

This means integration tests should be written for a hermetic environment. Do not rely on the developer's real shell dotfiles, home directory contents, or persisted Warp settings.

Where to put a new test

Add the actual test function in a module under crates/integration/src/test/.

Use these heuristics:

  • Put the test in an existing module when it matches that feature area.
  • Create a new module when the feature does not fit an existing one cleanly.
  • Add the test to crates/integration/tests/integration/ui_tests.rs if it is primarily a UI/app behavior test.
  • Add the test to crates/integration/tests/integration/shell_integration_tests.rs if it needs to run against every shell, or depends on a specific shell/set of shells.

Being present in crates/integration/src/test/*.rs is not enough. For a test to run under cargo nextest, it also needs to be listed in one of the macro files in crates/integration/tests/integration/.

Authoring checklist for a new test

When adding a new integration test, do all of the following:

  1. Implement pub fn test_name() -> Builder in a module under crates/integration/src/test/.
  2. Add the module to crates/integration/src/test.rs.
  3. pub use the new module's exports from crates/integration/src/test.rs.
  4. Add register_test!(test_name); in crates/integration/src/bin/integration.rs.
  5. Add test_name to either:
    • crates/integration/tests/integration/ui_tests.rs, or
    • crates/integration/tests/integration/shell_integration_tests.rs
  6. Default to making the test run in CI once it is added to one of those macro lists. Only mark it #[ignore] when the task explicitly calls for manual-only coverage or there is a concrete, documented reason it cannot run reliably in CI.
  7. Run the test manually first, then through nextest once it is stable enough for the suite you chose.

Writing the test body

The normal shape is:

rust
use crate::Builder;
use warp::integration_testing::step::new_step_with_default_assertions;
use warp::integration_testing::terminal::{
    clear_blocklist_to_remove_bootstrapped_blocks,
    execute_command_for_single_terminal_in_tab,
    wait_until_bootstrapped_single_pane_for_tab,
    util::ExpectedExitStatus,
};

pub fn test_example() -> Builder {
    Builder::new()
        .with_step(wait_until_bootstrapped_single_pane_for_tab(0))
        .with_step(clear_blocklist_to_remove_bootstrapped_blocks())
        .with_step(execute_command_for_single_terminal_in_tab(
            0,
            "echo hello".to_string(),
            ExpectedExitStatus::Success,
            "hello".to_string(),
        ))
        .with_step(
            new_step_with_default_assertions("Assert some UI state")
                .add_named_assertion("specific assertion name", |app, window_id| {
                    // inspect app state and return AssertionOutcome
                    warpui::integration::AssertionOutcome::Success
                }),
        )
}

Prefer a small number of focused steps with descriptive names over a huge monolithic test.

Builder guidance

Builder::new()

Start here almost every time.

Warp's wrapper automatically gives you:

  • a per-test root directory
  • isolated HOME
  • generated rc files for Bash, Zsh, and Fish
  • file-backed user preferences
  • a default 2-minute hard timeout
  • real-display support if WARPUI_USE_REAL_DISPLAY_IN_INTEGRATION_TESTS is present
with_setup(...)

Use this for filesystem or environment setup before the app runs.

Common patterns:

  • utils.set_env("NAME", Some(value))
  • creating files under utils.test_dir()
  • writing fixture config files

Prefer this over reaching into the real filesystem.

with_user_defaults(...)

Use this to set persisted Warp preferences before the test starts.

This is the right tool for settings backed by user preferences rather than environment variables.

set_should_run_test(...)

Use this to gate tests on shell/platform/runtime capabilities when the test genuinely cannot run everywhere.

with_on_finish(...)

Use this for final verification or artifact inspection that should happen after all steps complete, such as checking that screenshots or recordings were written.

with_real_display()

Use this explicitly when the test needs a real display for frame capture or visual workflows. Video/screenshot tests should normally be manual or ignored in CI unless there is a stable real-display path.

TestStep guidance

TestStep is the unit of execution. Each step can have:

  • setup callbacks
  • input events
  • actions
  • assertions
  • a timeout
  • retry count
  • failure handling
Start from helper constructors

Prefer:

  • wait_until_bootstrapped_single_pane_for_tab(0)
  • new_step_with_default_assertions("...")
  • new_step_with_default_assertions_for_pane("...", tab, pane)

The default step helpers already assert:

  • no pending model events
  • no block executing

These are good baseline invariants for most UI interactions.

Prefer helper APIs over raw event plumbing

Use high-level helpers from app/src/integration_testing/ whenever possible:

  • terminal command execution helpers
  • block list helpers
  • command palette helpers
  • navigation helpers
  • settings helpers
  • workflow/file tree/notebook helpers

Drop to raw with_event(...), with_event_fn(...), or saved-position mouse events only when there is no suitable helper.

Use named assertions

Prefer add_named_assertion(...) over unnamed assertions. Named assertions make failure output and runtime tags much easier to interpret.

Use polling assertions instead of sleeps

Assertions are polled until success or timeout. Lean on that model instead of hardcoding sleeps.

Good pattern:

  • trigger an event or action
  • assert on the eventual UI/model state

Avoid brittle timing assumptions.

Use step data when one step computes something for the next

If a later step needs data from an earlier one, use:

  • add_named_assertion_with_data_from_prior_step(...)
  • StepDataMap

This is useful for saving measured positions, counts, IDs, or other values from prior frames.

Use retries sparingly

set_retries(...) can help for a legitimately retryable step, but do not use it to hide deterministic failures. Prefer making the step more robust first.

Use PreconditionFailed for genuinely environmental flakes

If the environment reaches a state where the rest of the test is invalid, return AssertionOutcome::PreconditionFailed(...) instead of failing hard. The outer harness can rerun the entire test up to 10 times. The existing bootstrap helper is a good model for this.

Use this deliberately. The rerun mechanism exists for conditions the test genuinely cannot control, such as bootstrap racing or shell startup timing. It is not a way to turn an intermittently failing test green. A real bug that reproduces one run in five will pass under rerun and ship to users.

Before reaching for PreconditionFailed, confirm the failure is actually environmental by looking at the failure rate and the failure mode:

bash
for i in {0..50}; do
  RUST_BACKTRACE=full cargo run -p integration --bin integration -- test_name || break
done

If the same assertion fails in different ways, or fails while the environment looks fine, it is a product or test bug. Fix it rather than absorbing it into a rerun.

Designing a good integration test

Show full SKILL.md (1,014 more words)Show less
Keep the scope as small as the behavior allows

The scope of a test follows the scope of what you boot and drive, so cover one user journey per test and let separate tests cover separate journeys. When a flow is long, prefer several shorter tests that each verify one hop over a single test that walks the whole path. A long test is slower, harder to diagnose, and fails for many unrelated reasons.

Assert on behavior a user could observe

The framework can see internal state, which makes it tempting to assert on it. Anchor each test on the user-observable outcome:

  • output visible in the terminal
  • focus moved where expected
  • UI element opened or closed
  • selection changed
  • settings applied

Internal state assertions are still useful, but they should support the visible behavior rather than replace it. Assertions that mirror internal call sequences become change detectors: they break on every refactor and catch no bugs.

Make the failure diagnosable by someone else

An integration test spans processes, so a stack trace tells the next engineer almost nothing. The failure output has to carry the context instead:

  • Name every assertion with what it expects, not what it touches: "terminal shows command output", not "check blocks".
  • Give steps descriptive names; they are the breadcrumb trail through the run.
  • Put expected vs. actual into the assertion output rather than returning a bare failure.

Assume the person reading the failure has never seen this test and does not own the code it covers.

Keep the test hermetic

Builder::new() already gives you an isolated HOME, generated rc files, and file-backed preferences. Preserve that. Set up everything you depend on inside the test via with_setup(...) and with_user_defaults(...), and never rely on the developer's dotfiles, real settings, network access, or state left behind by another test. A test that assumes a resource is already in the right state will fail for the wrong reason on someone else's machine or in CI.

Own the test

Larger tests span components, so ownership is ambiguous by default and unowned tests rot. If you add one, you are the person who fixes it when it breaks. Put it in the module matching the feature area it covers so the next person can find the right owner.

Common test-writing patterns

1. Wait for bootstrap first

For most terminal-facing tests, the first real step should be:

  • wait_until_bootstrapped_single_pane_for_tab(0)

Do not start asserting on terminal UI before bootstrap completes.

2. Clear the bootstrapped blocks if block indices matter

If the test relies on saved positions like block_index:0, clear the block list after bootstrap:

  • clear_blocklist_to_remove_bootstrapped_blocks()

Otherwise the first user-generated block index depends on bootstrap output and the active shell.

3. Use helper command runners

Prefer helpers like:

  • execute_command_for_single_terminal_in_tab(...)
  • execute_echo(...)
  • execute_echo_str(...)
  • execute_long_running_command(...)

These helpers already handle a lot of correctness and output validation.

Running tests

Run one test directly through the integration binary

Use this first while authoring:

bash
cargo run -p integration --bin integration -- test_name

This is the fastest way to iterate on a specific test because it bypasses the outer Rust test wrapper and runs the named test directly.

Run one test through nextest

Once it is wired into one of the tests/integration/*.rs macro lists, run it with nextest:

bash
cargo nextest run --no-fail-fast --workspace test_name
Run with a real display when needed

For screenshot/video or other real-display flows:

bash
WARPUI_USE_REAL_DISPLAY_IN_INTEGRATION_TESTS=1 cargo run -p integration --bin integration -- test_name

Or with nextest:

bash
WARPUI_USE_REAL_DISPLAY_IN_INTEGRATION_TESTS=1 cargo nextest run --no-fail-fast --workspace test_name

Debugging and investigation

Get a backtrace on failures
bash
RUST_BACKTRACE=1 cargo run -p integration --bin integration -- test_name
Pause on failure

This is useful when running locally and you want to inspect the failed UI state:

bash
WARPUI_PAUSE_INTEGRATION_TEST_ON_FAILURE=1 cargo run -p integration --bin integration -- test_name
Pause after every step

Useful for understanding exactly what the test is doing:

bash
WARPUI_PAUSE_INTEGRATION_TEST_AT_EVERY_STEP=1 cargo run -p integration --bin integration -- test_name
Video and screenshots

If the task is specifically about recording a test, collecting screenshots, or validating overlay/video artifacts, also use the gui-integration-test-video skill (located at .warp/skills/gui-integration-test-video/SKILL.md).

Environment variable gotcha

utils.set_env(...) affects runtime environment lookups such as std::env::var(...).

It does not affect compile-time lookups like option_env!(...). If the product code uses option_env!, changing the env var inside the test will not change that behavior without rebuilding.

Verification checklist

Before considering a new integration test done, verify all of the following:

  • The test function lives under crates/integration/src/test/.
  • The module is added and re-exported in crates/integration/src/test.rs.
  • The test is registered in crates/integration/src/bin/integration.rs.
  • The test is listed in the correct nextest macro file and will run in CI by default, unless it was explicitly made manual-only with a documented reason.
  • The test passes when run directly through the integration binary.
  • The test passes through nextest if it is meant to be part of the automated suite.
  • An integration test is the right level for this behavior; it is not re-covering logic a unit test could reach.
  • The assertions check the intended user-visible behavior.
  • Every assertion is named, and the failure output would be actionable to someone who has never seen the test.
  • The test does not depend on the developer's real home directory, shell config, or machine state.
  • If the test uses screenshots/video, the produced artifacts were actually inspected rather than only assuming they exist.

Anti-patterns to avoid

  • Writing a test only in src/test/*.rs and forgetting the nextest macro list.
  • Asserting on bootstrap-sensitive block indices without clearing the bootstrapped blocks first.
  • Using raw events everywhere when a helper already exists.
  • Adding sleeps instead of assertion polling.
  • Making the test depend on personal dotfiles, real settings, or non-hermetic filesystem state.
  • Using retries or PreconditionFailed to paper over a deterministic bug.
  • Re-testing branch logic that a unit test already covers, at full app-boot cost.
  • Asserting on internal call sequences instead of user-visible behavior.
  • Unnamed assertions that produce failure output nobody can act on.
  • One long test that walks an entire user journey instead of several focused ones.
  • Leaving a real-display/manual test enabled in CI without a stable path.

Good workflow for agents

When asked to add or fix an integration test:

  1. Find the closest existing integration test module for the feature.
  2. Reuse helper assertions and step constructors before inventing new low-level plumbing.
  3. Register the test in all required places, not just the implementation file.
  4. Run the test manually first.
  5. If it belongs in automation, run it with nextest too.
  6. If the test exercises visual behavior, verify the resulting UI behavior or artifacts directly.

© warpdotdev, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/gui-integration-test of warpdotdev/warp.

Open the folder on GitHubat commit f571865

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in warpdotdev/warp, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Gui Integration Test next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Gui Integration Test compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Gui Integration Test this skillwarpdotdev/warp65k1 repos~5.1kAutomated safety check: PassAGPL-3.0
Plugin Testingpolyipseity/obsidian-terminal948—~828Automated safety check: PassAGPL-3.0
Create Modulecartography-cncf/cartography4.1k—~2.5kAutomated safety check: PassApache-2.0
Td Integration Testmarcus/td250—~1.2kAutomated safety check: PassMIT
Integration E2E Testingshinpr/claude-code-workflows690—~3.5kAutomated safety check: PassMIT
JS-in-HTML Testingliaohch3/claude-tap3.3k—~924Automated safety check: PassMIT

Similar skills

  • Plugin Testing

    polyipseity/obsidian-terminal

    Skill for testing Obsidian plugin features in this repository.

    948 GitHub stars~828 tokensUpdated 4 days ago
    Testing & QAAuto-check passed
  • Create Module

    cartography-cncf/cartography

    Author a new Cartography intel module end-to-end (entry point, sync GET/TRANSFORM/LOAD/CLEANUP, declarative data model, integration test, schema docs).

    4.1k GitHub stars~2.5k tokensUpdated today
    Testing & QAAuto-check passed
  • Write integration tests for the td-sync admin API using the TestHarness in internal/api/testharnesstest.go.

    250 GitHub stars~1.2k tokensUpdated 7 days ago
    Testing & QAAuto-check passed
  • Integration E2E Testing

    shinpr/claude-code-workflows

    Integration and E2E test design principles, ROI calculation, test skeleton specification, and review criteria.

    690 GitHub stars~3.5k tokensUpdated 6 days ago
    Testing & QAAuto-check passed
  • JS-in-HTML Testing

    liaohch3/claude-tap

    Tests JavaScript embedded in an HTML file in two layers: pytest checks of the logic ported to Python, and Playwright runs in a real browser for the DOM.

    3.3k GitHub stars~924 tokensUpdated 15 days ago
    Testing & QAAuto-check passed
  • Crosvm Testing

    google/crosvm

    Official

    Skill to assist with running tests and managing test VMs in the crosvm repository.

    1.3k GitHub stars~847 tokensUpdated today
    Testing & QAAuto-check passed

More from warpdotdev/warp

All 46 skills in this repo
  • Builds or updates a design system in Figma from a codebase in ordered phases: discovery, variables and tokens, components, theming and documentation, with checkpoints.

    65k GitHub starsUsed in 2 repos~4.4k tokens
    Auto-check passed
  • Required groundwork before any use_figma call: the rules and reference files for running JavaScript in a Figma file through the Plugin API without common failures.

    65k GitHub starsUsed in 4 repos~4.4k tokens
    Auto-check passed
  • Warp Factory Files

    warpdotdev/warp

    Authors and edits file-based Warp software factory definitions rooted at factory.yaml, covering agents, automations, scorers and webhooks, and validates them before a pull request.

    65k GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check passed
  • Figma Design to Code

    warpdotdev/warp

    Turns a Figma frame or component into production code that matches the design, using the Figma MCP server and the project's own design system.

    65k GitHub starsUsed in 4 repos~2.9k tokens
    Auto-check passed
  • Migrates the compatible subset of settings and global file-based MCP servers from the Warp desktop app into Warp Agent CLI without exposing credentials or state.

    65k GitHub starsUsed in 1 repo~2.1k tokens
    Auto-check passed
  • Creates project-specific design system rules from your codebase so coding agents implement Figma designs with your components, naming and tokens.

    65k GitHub starsUsed in 3 repos~4.6k tokens
    Auto-check passed

Categories

Questions about Gui Integration Test

What does Gui Integration Test do?

GUI desktop app only. An agent skill from warpdotdev/warp. Gui Integration Test is an agent skill from warpdotdev/warp. GUI desktop app only.

When should I use Gui Integration Test?

Gui Integration Test fits situations like: adding a new integration test; fixing a failing integration test; wiring a test into the manual runner; verifying end-to-end UI and terminal behavior in Warp.

How do I install Gui Integration Test in Claude Code?

Run `npx skills add warpdotdev/warp --skill gui-integration-test -a claude-code`. Or copy the skill folder (.agents/skills/gui-integration-test in warpdotdev/warp) into .claude/skills/gui-integration-test in your project. Claude Code loads it when a task matches its description.

How do I install Gui Integration Test in Codex?

Run `npx skills add warpdotdev/warp --skill gui-integration-test -a codex`. Or copy the skill folder (.agents/skills/gui-integration-test in warpdotdev/warp) into .agents/skills/gui-integration-test in your project. Codex loads it when a task matches its description.

Can I use Gui Integration Test in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add warpdotdev/warp --skill gui-integration-test -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/gui-integration-test, .gemini/skills/gui-integration-test, .github/skills/gui-integration-test and .opencode/skills/gui-integration-test in your project.

What does Gui Integration Test need to run?

Going by SKILL.md and its folder, Gui Integration Test needs the command-line tools its instructions call (cargo).

Does Gui Integration Test access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Gui Integration Test safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Gui Integration Test use?

Gui Integration Test is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Gui Integration Test use?

About 5.1k tokens (SKILL.md is roughly 21k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Gui Integration Test?

Skills that share tags, products or a category with Gui Integration Test: Plugin Testing (polyipseity/obsidian-terminal, 948 stars), Create Module (cartography-cncf/cartography, 4.1k stars), Td Integration Test (marcus/td, 250 stars) and Integration E2E Testing (shinpr/claude-code-workflows, 690 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Gui Integration Test?

warpdotdev (a GitHub organization) maintains it in warpdotdev/warp, which has 65,380 GitHub stars. The repository holds 46 skills in this directory. The repository was last updated on October 7, 2026.

Source: warpdotdev/warp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.