ArchUnitTS is an architecture testing library for TypeScript and JavaScript projects to specify and enforce architectural rules.
ArchUnitTS is an architecture testing library for TypeScript and JavaScript projects that allows developers to specify and enforce architectural rules as code. It helps prevent architectural drift, ensures adherence to design patterns like layered or clean architecture, and integrates with existing test suites to run automatically in CI/CD pipelines.
TypeScript and JavaScript developers working on medium to large applications who need to maintain architectural boundaries, enforce coding standards, and prevent technical debt through automated validation.
Developers choose ArchUnitTS because it offers comprehensive architecture testing beyond simple linting, including code metrics analysis, UML diagram validation, and custom rule support, all with seamless integration into popular testing frameworks and detailed error reporting.
ArchUnitTS is an architecture testing library. Specify and ensure architecture rules in your TypeScript app. Easy setup and pipeline integration.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports dependency directions, circular dependency detection, naming conventions, and UML diagram validation, as shown in the extensive feature examples and comparison table.
Provides clickable file paths in error messages for quick debugging, highlighted in the 'Informative Error Messages' section with video demonstrations.
Allows defining custom validation logic and metrics via `adhereTo()` and `customMetric()`, enabling tailored architecture checks beyond built-in features.
Fails by default when no files match rules to prevent false positives from typos—a key advantage emphasized in the library comparison.
Vitest requires `globals: true` configuration, and Jasmine needs extra boilerplate with `expectAsync` and `addAsyncMatchers`, adding setup complexity beyond Jest.
HTML report generation is marked as experimental in the README, and some advanced features like file logging may lack polish or thorough documentation.
Relies on static code analysis, which may not accurately capture dynamic imports or runtime dependencies, limiting effectiveness in modern JavaScript applications.