Quality

Quality is not something that is added before a release.

It is built into the development process from the beginning.

Vuesion combines static analysis, automated testing, type safety, code generation, and continuous integration to catch problems as early as possible.

The goal is simple:

Every change should increase confidence rather than uncertainty.

Type safety

Vuesion uses TypeScript throughout the entire application.

Type safety extends across:

  • Frontend
  • Server
  • Shared code
  • Database models
  • API contracts

Generated Prisma types ensure that database changes are reflected immediately throughout the codebase.

This allows many problems to be detected during development rather than after deployment.

Testing strategy

Different kinds of tests answer different questions.

Vuesion combines several testing approaches to provide confidence at every level of the application.

Text
    Unit tests
        │
        ▼
Integration tests
        │
        ▼
 End-to-end tests

Together, they verify individual functions, complete application behavior, and real user journeys.

Unit and integration tests

Vuesion uses Vitest together with Testing Library.

Most frontend tests are written as integration tests rather than isolated component tests.

Instead of testing implementation details, they verify how components behave from a user's perspective.

On the server, tests execute real HTTP requests and verify complete request flows, including validation, authorization, business logic, and database interaction.

This approach provides confidence that the different layers of the application work together correctly.

Storybook-driven component tests

Storybook is more than component documentation.

Many component tests reuse the same stories that are shown in Storybook.

Text
Story
  ├── Interactive documentation
  └── Automated tests

This avoids maintaining separate test fixtures while ensuring that documented examples always remain valid.

The same scenarios developers see in Storybook are verified automatically during testing.

End-to-end tests

End-to-end tests verify complete user journeys.

They execute the application in a real browser and interact with it exactly like a user would.

Typical scenarios include:

  • Signing in
  • Registering a new account
  • Navigating through the application
  • Updating data
  • Verifying complete workflows

While integration tests verify individual application behavior, end-to-end tests confirm that all parts work together in a production-like environment.

Code coverage

Vuesion aims for 100% code coverage.

This is not about reaching an arbitrary number.

It is about making every untested piece of code an explicit decision.

When code should intentionally remain uncovered, for example during an unfinished implementation, it should be excluded explicitly:

TypeScript
/* v8 ignore start */

This creates a visible marker that can easily be found and reviewed later.

Allowing coverage to decrease over time makes it difficult to distinguish intentional omissions from forgotten tests.

By treating uncovered code as an explicit choice, the test suite remains honest and maintainable as the project grows.

Static analysis

Automated testing is only one aspect of quality.

Vuesion also uses static analysis to detect problems before the application is executed.

This includes:

  • TypeScript
  • ESLint
  • Stylelint
  • Prettier

Together these tools enforce a consistent coding style while detecting many potential problems during development.

Continuous integration

Every change is automatically verified before it reaches production.

The continuous integration pipeline performs tasks such as:

  • Installing dependencies
  • Building the application
  • Building Storybook
  • Running linting
  • Running type checking
  • Executing unit and integration tests
  • Executing end-to-end tests

Automating these checks ensures that quality standards remain consistent regardless of who contributes to the project.

Quality through automation

Many repetitive quality-related tasks are automated.

Examples include:

  • Translation extraction
  • OpenAPI generation
  • Prisma Client generation
  • Database migrations

Automation reduces manual work while ensuring that generated artifacts remain synchronized with the source code.

Why this approach?

Quality is rarely lost because of one large mistake.

More often, it slowly degrades through small compromises.

An uncovered function here.

A skipped test there.

An outdated API specification.

A forgotten translation.

Vuesion minimizes these risks by making quality part of the everyday development workflow instead of a final verification step.

The result is a foundation that remains reliable as the product, team, and codebase continue to grow.

Next steps

Continue with Development Workflow to learn how new features are typically built inside Vuesion and how the different tools and concepts come together during everyday development.