Skip to content

TestForge 1.0.0-beta.1

Pre-release
Pre-release

Choose a tag to compare

@rmlev rmlev released this 07 Sep 20:18
· 6 commits to main since this release

This release introduces a significant update to TestForge's preset architecture and configuration model.

Highlights

  • Preset composition with extendPreset()

    • Create project-specific presets from existing presets.
    • Extend plugin manifests and customize plugin defaults without duplicating complete preset definitions.
    • Added validation for preset extensions and plugin configuration.
  • Layered preset architecture

    • Introduced a shared base preset used by the recommended Vitest and Jest presets.
    • Runner-specific presets can now build on a common Vue plugin configuration while keeping runner-specific behavior separate.
  • Plugin option factories

    • Preset plugin defaults are now defined as PluginOptionsFactory functions.
    • Each pipeline context receives a fresh plugin configuration instead of sharing mutable configuration objects.
    • This prevents state from leaking between independent test environments.

Breaking Change

Preset plugin defaults must now be defined as factory functions instead of shared configuration objects.

defaults: {
  pinia: () => ({
    initialState: {},
  }),
}

Existing custom presets using plain configuration objects must be migrated to the new factory-based format.

When extending a preset, invoke the original factory explicitly if its configuration should be preserved:

defaults: {
  pinia: () => ({
    ...basePreset.defaults.pinia(),
    createSpy: vi.fn,
  }),
}

Packages

All TestForge packages have been released as 1.0.0-beta.1.

This is a beta release and the configuration APIs may continue to evolve before the stable 1.0.0 release.