Founder & Lead Engineer, RAITHub
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.
| Item | What it is | Why it matters |
|---|---|---|
| End-to-end specs | One file per journey (sign-up, login, checkout, core workflow) | Named by journey, so a failure tells you what broke for users |
| Component specs | Tests for individual React, Vue or Angular components | Fast feedback before a component reaches a full page |
| cypress.config | Base URL, retries, viewports, reporters | One place to change how and where the suite runs |
| Custom commands | Reusable login and setup helpers | Tests start logged in, without repeating steps everywhere |
| Network stubs | Intercepts for the API calls behind the UI | Deterministic tests that do not depend on live data |
| CI workflow | The pipeline file that runs the suite on every change | A failing test blocks the merge, not just a local run |
| Screenshots and videos | Evidence captured automatically on failure | You can see what the browser did when a test failed |
| Handover guide | How to run, debug and extend the suite | Your 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?
| Route | Choose this when | Watch out for |
|---|---|---|
| Write it yourself with Cypress (free) | Your team has the time and the browser-testing skill | Login, data and CI wiring are where most of the effort hides |
| A freelancer for one pass | You need a single launch covered | No one maintains it afterwards; coverage decays |
| A managed build and maintain (RAITHub) | You want the full deliverable above, gated and kept current | Confirm 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.
Related posts
Ready to discuss your project?
Book a free 15-minute technical audit with our engineering team.