首页龙虾技能列表 › Cypress — Cypress

🌲 Cypress — Cypress

v1.0.0

Cypress 端到端测试工具。

0· 590·4 当前·4 累计
by @ivangdavila (Iván)·MIT-0
下载技能包
License
MIT-0
最后更新
2026/2/26
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
This is an instruction-only Cypress testing guide whose requirements and instructions match its stated purpose and do not request unrelated credentials or installs.
评估建议
This skill is a documentation/guide for Cypress and appears coherent and appropriate. Before installing/using it: 1) ensure 'npx' and your node toolchain are available; 2) review any CI templates (they reference CYPRESS_RECORD_KEY, GITHUB_TOKEN) and only add secrets via your CI provider's secret store; 3) inspect generated tests/fixtures to ensure they don't embed real credentials or production data; 4) when following instructions that seed/reset databases (cy.task('db:seed')), confirm the agent...
详细分析 ▾
用途与能力
Name/description (Cypress E2E/component testing) align with what the skill asks for: only 'npx' as a required binary and a set of guidance files describing test structure, commands, CI templates, and setup. Nothing requested is unrelated to running or authoring Cypress tests.
指令范围
SKILL.md and the included documents direct the agent to read project files, create Cypress config/support/fixtures/tests, run common local/CI commands (npm ci, npx cypress run, etc.), and modify repository files — all within the normal scope of setting up/running tests. The instructions do reference reading package.json and filesystem paths inside the project (expected for this task).
安装机制
There is no install spec and no code files to write or download; the skill is instruction-only. It relies on existing developer tooling (npx/npm) which is proportionate for Cypress work.
凭证需求
The registry metadata declares no required env vars or credentials (appropriate). The docs do show common optional CI envs such as CYPRESS_RECORD_KEY, GITHUB_TOKEN, and examples that read Cypress.env('API_TOKEN') or use localStorage tokens — these are standard for CI/test runs but are not required by the skill. Users should avoid placing real production secrets in fixtures or test code and should manage CI secrets via the platform's secret store.
持久化与权限
always is false and the skill does not request persistent system-wide privileges or modify other skills. It recommends creating project files under the repository (normal development behavior) and does not attempt to change agent/system configuration outside the project's scope.
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

🖥️ OSLinux · macOS · Windows

版本

latestv1.0.02026/2/22

Initial release

● 无害

安装命令 点击复制

官方npx clawhub@latest install cypress
镜像加速npx clawhub@latest install cypress --registry https://cn.clawhub-mirror.com

技能文档

Setup

On first use, read setup.md for integration guidelines.

当...时 到 使用

User needs E2E tests, component tests, or API tests with Cypress. Agent writes tests, debugs flaky specs, configures CI/CD, and creates custom commands.

Architecture

Project tests live in the standard Cypress structure:

cypress/
├── e2e/              # E2E test specs
├── component/        # Component tests (if enabled)
├── fixtures/         # Test data JSON files
├── support/
│   ├── commands.ts   # Custom commands
│   ├── e2e.ts        # E2E support file
│   └── component.ts  # Component support file
└── downloads/        # Downloaded files during tests
cypress.config.ts     # Main configuration

Quick Reference

TopicFile
Setup processsetup.md
Memory templatememory-template.md
Selectors & queriesselectors.md
Custom commandscommands.md
Network & APInetwork.md
CI/CD configurationci.md

Core Rules

1. Selectors: data-testid 第一个

// ✅ Resilient — survives refactors
cy.get('[data-testid="submit-btn"]')
cy.get('[data-cy="user-list"]')

// ❌ Fragile — breaks on style/structure changes cy.get('.btn-primary.submit') cy.get('#root > div > form > button:nth-child(3)') cy.get('button').contains('Submit') // OK for text, not structure

Priority order: data-testid > data-cy > aria-* > text content > CSS selectors.

2. Never 使用 Fixed Waits

// ❌ Flaky and slow
cy.wait(3000)
cy.get('.loader').should('exist')
cy.wait(2000)

// ✅ Wait for actual state cy.get('.loader').should('not.exist') cy.get('[data-testid="results"]').should('be.visible') cy.intercept('GET', '/api/users').as('getUsers') cy.wait('@getUsers')

3. Intercept Network Requests

// Setup intercepts BEFORE triggering actions
cy.intercept('POST', '/api/login', { statusCode: 200, body: { token: 'abc' } }).as('login')
cy.get('[data-testid="login-btn"]').click()
cy.wait('@login')

4. One Assertion Focus per Test

// ✅ Clear failure message
it('shows error on invalid email', () => {
  cy.get('[data-testid="email"]').type('invalid')
  cy.get('[data-testid="submit"]').click()
  cy.get('[data-testid="email-error"]').should('contain', 'Valid email required')
})

// ❌ Multiple concerns — unclear which failed it('validates the entire form', () => { // Tests 5 different validation rules })

5. Commands 对于 Repeated Actions

// cypress/support/commands.ts
Cypress.Commands.add('login', (email: string, password: string) => {
  cy.session([email, password], () => {
    cy.visit('/login')
    cy.get('[data-testid="email"]').type(email)
    cy.get('[data-testid="password"]').type(password)
    cy.get('[data-testid="submit"]').click()
    cy.url().should('include', '/dashboard')
  })
})

// Usage cy.login('user@example.com', 'password123')

6. Fixtures 对于 Test Data

// cypress/fixtures/user.json
{
  "validUser": { "email": "test@example.com", "password": "Test123!" },
  "adminUser": { "email": "admin@example.com", "password": "Admin123!" }
}
cy.fixture('user').then((users) => {
  cy.login(users.validUser.email, users.validUser.password)
})

7. Isolation: 重置 State 之前 Tests

beforeEach(() => {
  cy.intercept('GET', '/api/notifications', { body: [] })
  cy.clearCookies()
  cy.clearLocalStorage()
  // Or: cy.task('db:seed') if using database reset
})

Common Traps

TrapConsequenceFix
cy.wait(ms) fixed delaysFlaky tests, slow CIUse cy.intercept().as() + cy.wait('@alias')
CSS selectors for actionsBreak on redesignUse data-testid attributes
Test interdependenceOne failure cascadesEach test must setup its own state
Asserting too earlyFalse positivesChain .should() to auto-retry
Forgetting baseUrlHardcoded URLs everywhereSet baseUrl in config
Skipping viewport testsMobile bugs in prodAdd cy.viewport() tests
Ignoring retry-abilityFlaky assertionsUse Cypress queries, not jQuery

Debugging

时间 Travel

Click any command in the Command Log to see DOM snapshot at that moment.

暂停 和 Step

cy.get('[data-testid="item"]').then(($el) => {
  debugger  // Opens DevTools
})
// Or
cy.pause()  // Pause execution, step manually

Console Debugging

cy.get('[data-testid="items"]')
  .should('have.length.gt', 0)
  .then(($items) => {
    console.log('Found items:', $items.length)
  })

Configuration

cypress.配置.ts Essentials

import { defineConfig } from 'cypress'

export default defineConfig({ e2e: { baseUrl: 'http://localhost:3000', viewportWidth: 1280, viewportHeight: 720, defaultCommandTimeout: 10000, requestTimeout: 10000, retries: { runMode: 2, openMode: 0 }, video: false, // Enable for CI debugging screenshotOnRunFailure: true, setupNodeEvents(on, config) { // Plugins here }, }, component: { devServer: { framework: 'react', // or 'vue', 'angular', etc. bundler: 'vite', // or 'webpack' }, }, })

TypeScript Support

// cypress/support/commands.ts
declare global {
  namespace Cypress {
    interface Chainable {
      login(email: string, password: string): Chainable
      getByTestId(testId: string): Chainable>
    }
  }
}

Cypress.Commands.add('getByTestId', (testId: string) => { return cy.get([data-testid="${testId}"]) })

Running Tests

CommandPurpose
npx cypress openInteractive mode
npx cypress runHeadless (CI)
npx cypress run --spec "cypress/e2e/login.cy.ts"Single spec
npx cypress run --headedHeadless but visible
npx cypress run --browser chromeSpecific browser

External Endpoints

This skill does not call external APIs. Cypress runs entirely locally or in your own CI environment.

Security & Privacy

Data stays local:

  • 所有 test code 和 fixtures remain 在...中 project directory
  • Cypress runs locally 或 在...中 own CI environment

skill 做 不:

  • 发送 data 到 external services
  • Require API keys 或 authentication
  • Access files outside project directory

Note: Cypress Cloud (可选, paid) 可以 接收 test results 如果 configured 带有 CYPRESS_RECORD_KEY. skill 做 不 configure 或 recommend .

Related Skills

Install with clawhub install if user confirms:
  • playwright — alternative E2E 框架
  • typescript — TypeScript best practices
  • javascript — JS fundamentals 和 patterns
  • react — React 组件 testing

Feedback

  • 如果 useful: clawhub star cypress
  • Stay updated: clawhub 同步
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务