Back to BlogQuality & Testing

A Cypress Test Suite for My App: Scope, CI and Handover

Rupak Amin

Founder & Lead Engineer, RAITHub

7 min read

RAITHub ships and tests production software. See QA as a Service or talk to us.

A Cypress test suite for your app is a set of end-to-end and component tests that drive your product in a real browser, live in your repository, and run in your CI to block a broken release. You get the tests, the configuration, CI wiring, screenshots and videos on failure, a handover guide, and full IP. RAITHub scopes it to your money-making journeys and quotes after a free 15-minute audit.

If you would rather have it built for you, see how RAITHub would do this below, or start with the QA and test automation service.

What exactly is in the deliverable?

Cypress is an open-source tool that runs tests inside the browser, covering both end-to-end journeys and isolated component tests (Cypress documentation). A delivered suite is more than a folder of tests. Here is everything that lands in your repository.

ItemWhat it isWhy it matters
End-to-end specsOne file per journey (sign-up, login, checkout, core workflow)Named by journey, so a failure tells you what broke for users
Component specsTests for individual React, Vue or Angular componentsFast feedback before a component reaches a full page
cypress.configBase URL, retries, viewports, reportersOne place to change how and where the suite runs
Custom commandsReusable login and setup helpersTests start logged in, without repeating steps everywhere
Network stubsIntercepts for the API calls behind the UIDeterministic tests that do not depend on live data
CI workflowThe pipeline file that runs the suite on every changeA failing test blocks the merge, not just a local run
Screenshots and videosEvidence captured automatically on failureYou can see what the browser did when a test failed
Handover guideHow to run, debug and extend the suiteYour team can keep it alive after the engagement

How is the project laid out?

A readable structure matters as much as the tests. A typical layout keeps end-to-end specs, component specs and helpers apart:

cypress/
  e2e/
    auth.cy.ts
    checkout.cy.ts
    core-workflow.cy.ts
  component/
    PriceTag.cy.tsx
  support/
    commands.ts    reusable login, setup
cypress.config.ts

Tests follow Cypress's own guidance: data-attribute selectors rather than brittle CSS, reusable custom commands for login, and intercepted network calls so results are deterministic (Cypress best practices). A single spec reads like the journey it protects:

describe('checkout', () => {
  it('completes for a signed-in user', () => {
    cy.login('buyer')
    cy.intercept('POST', '/api/orders').as('createOrder')
    cy.visit('/cart')
    cy.findByRole('button', { name: 'Checkout' }).click()
    cy.findByLabelText('Card number').type('4242424242424242')
    cy.findByRole('button', { name: 'Pay' }).click()
    cy.wait('@createOrder')
    cy.findByText('Order confirmed').should('be.visible')
  })
})

How does the suite run in CI?

The point of the suite is the gate. The CI workflow runs the suite on every pull request and saves screenshots and videos when a test fails, so you can see what the browser did. A failing journey blocks the merge. If you release often, this turns "we hope checkout still works" into a build that refuses to ship when it does not.

Free checklist

AI-Built App Launch Readiness Checklist

25 checks before you let real users in. Enter your email and we’ll reveal it below (and send you a copy).

One email, the checklist, no spam. By submitting you agree we can email you this checklist and reply to your enquiry.

Where to draw the line between fast unit tests and slower end-to-end tests is a judgement call; RAITHub's own approach is described in how RAITHub tests software. If your current end-to-end tests pass locally but fail at random in CI, read how to fix flaky end-to-end tests first, because a flaky gate is worse than none.

How do you read a failed test, and why does that matter?

A suite is only as useful as the evidence it leaves when something breaks. Cypress runs each step visibly in a command log and, in CI, captures a screenshot at the point of failure and a video of the whole run. The delivered suite saves both as artefacts, so a red build is never just a red tick: you can watch exactly what the browser did and see the moment the app diverged.

It changes how a failure is handled. Instead of "a test failed, can someone reproduce it", a developer opens the video and the screenshot, sees the step where the app behaved wrongly, and fixes the cause. For a team without this today, moving from a bare stack trace to a watchable replay is often the single biggest cut in time spent chasing failures. The delivered suite also names each test after the journey it protects, so a failed build reads as "checkout broke", not "spec 14 failed", and the owner of the fix is obvious before anyone opens the video.

Buy, build or hire the suite?

RouteChoose this whenWatch out for
Write it yourself with Cypress (free)Your team has the time and the browser-testing skillLogin, data and CI wiring are where most of the effort hides
A freelancer for one passYou need a single launch coveredNo one maintains it afterwards; coverage decays
A managed build and maintain (RAITHub)You want the full deliverable above, gated and kept currentConfirm everything lands in your repository and IP is yours

If you only need the suite written once and expect to maintain it yourself, that is a fixed-scope build. If you want coverage to keep growing as the product does, that is a monthly plan under QA as a service.

How RAITHub would do this

  • Scope: identify the three to seven journeys that make money or hold data; agree the roles and any component tests worth adding.
  • Build: deliver the specs, config, custom commands, network stubs and CI workflow described above, with steady, deterministic tests.
  • Gate: the suite runs on every pull request, screenshots and videos are saved on failure, and a failure blocks the merge.
  • Handover: everything in your repository, a run-and-extend guide, a walkthrough, full IP assigned to you and a standard NDA.

Timeline: a first gated set of core journeys lands inside a fixed-scope engagement; broader coverage continues on a monthly plan. You receive: the tests, CI configuration, evidence on failure, a handover document, full IP and an NDA. Proof: RAITHub's suites are counted in real repositories, from 400+ tests on this website to 530+ on Sundor Skin, with no Cypress-specific case study yet, so judge the work on the free audit. Next step: tell RAITHub about your app, then get a written fixed quote. No rates are published.

If you are still deciding whether to hire this out at all, read hire someone to write Cypress tests.

Frequently asked questions

What do I actually receive at the end?

The end-to-end and component specs, the Cypress configuration, custom login commands, network stubs, a CI workflow that gates merges, screenshots and videos on failure, and a handover guide, all committed to your repository with full IP assigned to you.

Do the tests run in my own CI, or yours?

Yours. The suite is wired into your pipeline, so it runs on your infrastructure on every change and keeps working without any dependency on RAITHub.

How many journeys does the first suite cover?

Usually the three to seven journeys that make money or hold customer data. Those are gated first; the rest of the product is covered as coverage widens on a monthly plan.

Can Cypress test my components as well as full pages?

Yes. Cypress component testing mounts a single React, Vue or Angular component in the browser, so the suite can cover both whole journeys and individual UI pieces.

Can you build a suite for an app that has no tests at all?

Yes. RAITHub writes tests around how the app behaves today and gates the most important journeys first, which is the safest way to add a net under an untested product.

Will my own developers be able to maintain it?

Yes. The suite follows Cypress's recommended patterns, is laid out for readability, and comes with a guide and a walkthrough so your team can run, debug and extend it.

Cypresstest suiteend-to-end testingcomponent testingCI wiringQA as a service

Ready to discuss your project?

Book a free 15-minute technical audit with our engineering team.