Control Ui

作者 cursorccb5507cec15无许可证10K 个星标收录于 2026年10月8日更新于 2026年10月8日仓库今天更新

Build or adapt a local browser/CDP harness to drive and inspect a web, IDE, or Electron UI. Use for local UI verification, screenshots, accessibility snapshots, perf profiles, visual diffs, or reproducing UI bugs.

AI 生成的概览

构建或调整本地浏览器/CDP 测试装置,用截图和快照驱动并检查 Web、IDE 或 Electron 界面。

功能
指导智能体围绕应用的开发服务器或 Chromium 调试端口搭建本地浏览器或 Chrome DevTools Protocol 测试装置。内容涵盖环境搭建、页面选择、交互循环,以及性能剖析、堆快照、网络日志和渲染检查等 CDP 能力。产出截图、无障碍快照、跟踪记录和前后对比等验证证据。
适用场景
适用于复现依赖真实浏览器焦点、键盘输入、滚动、调整窗口大小或渲染的界面缺陷。也适合验证视觉或无障碍改动,以及在上线前检查本地 Web、IDE 或 Electron 行为。
运行要求
仅为说明文档,不含随附脚本。需要本地运行的应用、Playwright 等浏览器自动化工具或仓库现有工具;Electron 或 Chromium 应用还需远程调试端口。可能使用 CDP 进行性能、内存、网络和渲染检查。

Control UI

Use local browser automation to verify UI behavior with evidence. First reuse the repo's own Playwright, browser, or Electron harness if it exists; otherwise assemble a temporary local harness around the app's dev server or Chromium debug port.

What It Is Used For

  • Reproducing UI bugs that depend on real browser focus, keyboard input, scrolling, resizing, or rendering.
  • Verifying visual or accessibility changes with screenshots and snapshots.
  • Checking local web, IDE, or Electron behavior before shipping.
  • Capturing console logs, network logs, CPU profiles, traces, or heap snapshots.
  • Creating before/after evidence for verify-this.

Setup Pattern

  1. Start the app locally using the repo's documented dev command.
  2. Discover existing local harnesses: Playwright tests, Cypress specs, Storybook, browser scripts, Electron launch scripts, or snapshot tools.
  3. For a web app, connect to the local URL with the existing browser tooling.
  4. For Electron/Chromium, enable a remote debugging port when supported.
  5. Select the correct page by stable app markers, not by tab order alone.
  6. Prefer accessibility roles, labels, and stable data-* selectors over coordinates.

Generic Web Harness

Use the repo's installed browser tooling when possible. If the repo already has Playwright, a minimal one-off probe looks like:

javascript
import { chromium } from "playwright";
const browser = await chromium.launch();const page = await browser.newPage({ viewport: { width: 1280, height: 800 } });await page.goto("http://127.0.0.1:<port>");await page.getByRole("button", { name: /submit/i }).click();await page.screenshot({ path: "/tmp/ui-harness-after.png", fullPage: true });await browser.close();

Do not add Playwright as a project dependency just for this probe unless the user asks. Prefer existing dev dependencies or external browser tools already available in the environment.

Generic CDP Harness

For Electron or a Chromium app launched with --remote-debugging-port=<port>, connect over CDP:

javascript
import { chromium } from "playwright";
const browser = await chromium.connectOverCDP("http://127.0.0.1:<debug-port>");const pages = browser.contexts().flatMap((context) => context.pages());let page;for (const candidate of pages) {  if (await candidate.locator("<app-root-selector>").count()) {    page = candidate;    break;  }}
if (!page) {  console.log(await Promise.all(pages.map(async (p) => ({    title: await p.title(),    url: p.url(),  }))));  throw new Error("No matching app page found");}
await page.screenshot({ path: "/tmp/ui-harness-cdp.png", fullPage: true });await browser.close();

Replace <app-root-selector> with a stable marker from the current repo, such as a root app node, landmark, or product-specific data-* attribute.

Interaction Loop

  1. Capture a page snapshot or screenshot before acting.
  2. Choose a target from the latest page structure.
  3. Perform exactly one structural action: click, type, keypress, drag, scroll, navigate, or resize.
  4. Capture a fresh snapshot/screenshot.
  5. Verify the expected state change.
  6. Save artifacts for before/after comparisons when the user asked for proof.

CDP Capabilities

Use raw CDP only when higher-level browser APIs are insufficient:

  • Performance: CPU profiles, traces, paint flashing, FPS meter, layout shift inspection.
  • Memory: heap snapshots and forced GC for leak investigations.
  • Network: request blocking, throttling, cache disablement, request/response logs.
  • Rendering: viewport changes, color scheme emulation, reduced motion, accessibility checks.
  • Debugging: console streaming, exception capture, DOM snapshots.

Page Selection

When multiple app windows/tabs share a debug port:

  • Prefer a positive marker for the surface under test, such as an app root selector.
  • Use a negative marker to avoid the wrong surface when necessary.
  • If no page matches, list available page titles and URLs instead of guessing.

Guardrails

  • Do not rely on stale element references after navigation or structural changes.
  • Avoid coordinate clicks unless a fresh screenshot was captured immediately before the click.
  • Keep test data local and disposable.
  • Do not store screenshots or heap snapshots from privacy-sensitive workspaces unless the user explicitly agrees.
  • Do not hard-code selectors, ports, or script paths from another repository. Discover the current repo's local app markers.
  • Clean up dev servers, debug sessions, and temp profiles when done.

来源与署名

来源:cursor/plugins位于cursor-team-kit/skills/control-ui提交ccb5507

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架