Back to Blogs

How I Automated API Tests with Cypress

Published on January 2026 | 8 min read
Cypress API Testing

Introduction

API testing has become a critical part of quality assurance in modern software development. With microservices and RESTful APIs becoming the norm, testing at the API level allows us to catch bugs early, improve test coverage, and reduce reliance on UI testing. In this comprehensive guide, I'll share how I built a robust API testing framework using Cypress.

Why Cypress for API Testing?

While many teams use Postman or REST Assured for API testing, I prefer Cypress for several reasons:

Setting Up Your API Testing Framework

Step 1: Install Cypress

npm install cypress --save-dev
npx cypress open

Step 2: Create a Base Configuration

Create a cypress.config.js file to configure your API base URL and environment variables:

module.exports = {
  e2e: {
    baseUrl: 'https://api.example.com',
    env: {
      API_KEY: 'your-api-key',
      AUTH_TOKEN: 'your-token'
    }
  }
}

Writing Your First API Test

Let's write a test for a simple GET request that fetches user data:

describe('User API Tests', () => {
  it('should fetch user by ID', () => {
    cy.request('GET', '/users/1').then((response) => {
      expect(response.status).to.eq(200)
      expect(response.body).to.have.property('id')
      expect(response.body.id).to.eq(1)
    })
  })
})

Creating Custom Commands for Reusability

Custom commands help reduce code duplication. Create a commands.js file:

Cypress.Commands.add('apiRequest', (method, endpoint, data = null) => {
  return cy.request({
    method: method,
    url: endpoint,
    body: data,
    headers: {
      'Authorization': `Bearer ${Cypress.env('AUTH_TOKEN')}`
    }
  })
})

Best Practices for API Testing

1. Test Both Happy and Sad Paths

Don't just test when everything works. Test error scenarios, invalid inputs, and edge cases:

2. Validate Response Structure and Content

Use schema validation and content assertions to ensure API responses meet expectations:

expect(response.body).to.have.all.keys('id', 'name', 'email')
expect(response.body.email).to.match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/)

3. Use Test Data Fixtures

Store test data in fixture files for better maintainability and data-driven testing.

4. Handle Authentication Properly

Use environment variables or secure storage for API keys and tokens. Never commit credentials to version control.

Integrating into CI/CD Pipeline

Add a script to your package.json:

"scripts": {
  "test:api": "cypress run --spec 'cypress/e2e/**/*.cy.js'"
}

Conclusion

Building a comprehensive API testing framework with Cypress enables faster feedback loops, better quality assurance, and improved collaboration between QA and development teams. By following these best practices and examples, you'll be well-equipped to create reliable, maintainable API tests.

Start with basic GET and POST requests, gradually add custom commands and utilities, and scale your framework as your application grows. Happy testing!