# Send Cypress to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "cypress",
    "name": "Cypress",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/ivangdavila/cypress",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/cypress",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/cypress",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=cypress",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "ci.md",
      "commands.md",
      "memory-template.md",
      "network.md",
      "selectors.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "cypress",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-02T07:03:39.165Z",
      "expiresAt": "2026-05-09T07:03:39.165Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=cypress",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=cypress",
        "contentDisposition": "attachment; filename=\"cypress-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "cypress"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/cypress"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/cypress",
    "downloadUrl": "https://openagent3.xyz/downloads/cypress",
    "agentUrl": "https://openagent3.xyz/skills/cypress/agent",
    "manifestUrl": "https://openagent3.xyz/skills/cypress/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/cypress/agent.md"
  }
}
```
## Documentation

### Setup

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

### When to Use

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

TopicFileSetup processsetup.mdMemory templatememory-template.mdSelectors & queriesselectors.mdCustom commandscommands.mdNetwork & APInetwork.mdCI/CD configurationci.md

### 1. Selectors: data-testid First

// ✅ 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 Use 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 for 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 for 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: Reset State Before Tests

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

### Common Traps

TrapConsequenceFixcy.wait(ms) fixed delaysFlaky tests, slow CIUse cy.intercept().as() + cy.wait('@alias')CSS selectors for actionsBreak on redesignUse data-testid attributesTest interdependenceOne failure cascadesEach test must setup its own stateAsserting too earlyFalse positivesChain .should() to auto-retryForgetting baseUrlHardcoded URLs everywhereSet baseUrl in configSkipping viewport testsMobile bugs in prodAdd cy.viewport() testsIgnoring retry-abilityFlaky assertionsUse Cypress queries, not jQuery

### Time Travel

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

### Pause and 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)
  })

### cypress.config.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<void>
      getByTestId(testId: string): Chainable<JQuery<HTMLElement>>
    }
  }
}

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

### Running Tests

CommandPurposenpx cypress openInteractive modenpx cypress runHeadless (CI)npx cypress run --spec "cypress/e2e/login.cy.ts"Single specnpx cypress run --headedHeadless but visiblenpx 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 that stays local:

All test code and fixtures remain in project directory
Cypress runs locally or in your own CI environment

This skill does NOT:

Send data to external services
Require API keys or authentication
Access files outside project directory

Note: Cypress Cloud (optional, paid) can receive test results if configured with CYPRESS_RECORD_KEY. This skill does not configure or recommend it.

### Related Skills

Install with clawhub install <slug> if user confirms:

playwright — alternative E2E framework
typescript — TypeScript best practices
javascript — JS fundamentals and patterns
react — React component testing

### Feedback

If useful: clawhub star cypress
Stay updated: clawhub sync
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: ivangdavila
- Version: 1.0.0
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-02T07:03:39.165Z
- Expires at: 2026-05-09T07:03:39.165Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/cypress)
- [Send to Agent page](https://openagent3.xyz/skills/cypress/agent)
- [JSON manifest](https://openagent3.xyz/skills/cypress/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/cypress/agent.md)
- [Download page](https://openagent3.xyz/downloads/cypress)