@orkestrel/scaffold 0.0.29 → 0.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -36,18 +36,28 @@ paths:
36
36
  A proof that covers the workspace instead of one module has a fixed location, so no package invents
37
37
  its own:
38
38
 
39
- | Path | Proves |
40
- | ---------------------------- | --------------------------------------------------------------- |
41
- | `tests/policy.test.ts` | Every source file obeys the syntactic coding and placement law |
42
- | `tests/config.test.ts` | Root configuration resolves its aliases, projects, and outputs |
43
- | `tests/guides.test.ts` | Every documented API exists and every public API is documented |
44
- | `tests/conformance.test.ts` | Where this package drifts from the official tooling it tracks |
45
- | `tests/integration.test.ts` | The built package works when installed and driven from outside |
46
- | `tests/service/**/*.test.ts` | The live external services this package drives, driven for real |
39
+ | Path | Proves |
40
+ | ---------------------------- | ------------------------------------------------------------------- |
41
+ | `tests/policy.test.ts` | Every source file obeys the syntactic coding and placement law |
42
+ | `tests/config.test.ts` | Root configuration resolves its aliases, projects, and outputs |
43
+ | `tests/guides.test.ts` | Every documented API exists and every public API is documented |
44
+ | `tests/conformance.test.ts` | Where this package drifts from the official tooling it tracks |
45
+ | `tests/integration.test.ts` | The package's features work together end to end across environments |
46
+ | `tests/service/**/*.test.ts` | The live external services this package drives, driven for real |
47
47
 
48
48
  - `.claude/rules/workspace.md` names the Vitest project each location belongs to.
49
49
  - `integration.test.ts` is a reserved filename at any level. It names a scope rather than a module,
50
50
  so the mirror rule does not reach it; its scope is the directory it sits in.
51
+ - An integration test is an end-to-end test: it composes the package's own features and drives them
52
+ together, through the public API, with no part of the system under test replaced.
53
+ - Scope it by where the composition happens. `tests/integration.test.ts` drives features **across**
54
+ environments — core through server, core through browser, one environment's output consumed by
55
+ another. A nested `tests/src/<environment>/integration.test.ts` drives features **within** that one
56
+ environment.
57
+ - Do not put a packaging, install, or distribution check in an integration test. What the tarball
58
+ contains is a different question from whether the features compose.
59
+ - A test the mirror rule flags is a misplaced test until its placement is checked. Move it to the
60
+ location its scope names. Never widen the rule to accept it.
51
61
  - Give every nested `integration.test.ts` its own exact-path project entry. A glob such as
52
62
  `tests/src/**/integration.test.ts` double-claims a file another project already owns.
53
63
 
@@ -114,14 +114,14 @@ environment:
114
114
  The second axis is cross-cutting workspace proofs. Each one covers the whole workspace rather than
115
115
  one environment, so each is its own project:
116
116
 
117
- | Project | Files | Proves | In `test` |
118
- | ------------- | ---------------------------- | --------------------------------------------------------------- | --------- |
119
- | `policy` | `tests/policy.test.ts` | Every source file obeys the syntactic coding and placement law | Yes |
120
- | `config` | `tests/config.test.ts` | Root configuration resolves its aliases, projects, and outputs | Yes |
121
- | `guides` | `tests/guides.test.ts` | Every documented API exists and every public API is documented | Yes |
122
- | `conformance` | `tests/conformance.test.ts` | Where this package drifts from the official tooling it tracks | Yes |
123
- | `integration` | `tests/integration.test.ts` | The built package works when installed and driven from outside | No |
124
- | `service` | `tests/service/**/*.test.ts` | The live external services this package drives, driven for real | No |
117
+ | Project | Files | Proves | In `test` |
118
+ | ------------- | ---------------------------- | ------------------------------------------------------------------- | --------- |
119
+ | `policy` | `tests/policy.test.ts` | Every source file obeys the syntactic coding and placement law | Yes |
120
+ | `config` | `tests/config.test.ts` | Root configuration resolves its aliases, projects, and outputs | Yes |
121
+ | `guides` | `tests/guides.test.ts` | Every documented API exists and every public API is documented | Yes |
122
+ | `conformance` | `tests/conformance.test.ts` | Where this package drifts from the official tooling it tracks | Yes |
123
+ | `integration` | `tests/integration.test.ts` | The package's features work together end to end across environments | No |
124
+ | `service` | `tests/service/**/*.test.ts` | The live external services this package drives, driven for real | No |
125
125
 
126
126
  `conformance` and `service` are two subjects, not two names for one. `conformance` measures this
127
127
  package against an official artifact it stays compatible with and drives nothing external: the
@@ -290,7 +290,7 @@ var DEFAULT_ENGINES = `>=${MINIMUM_NODE_VERSION}`;
290
290
  var BASE_DEV_DEPENDENCIES = Object.freeze({
291
291
  "@microsoft/api-extractor": "^7.58.12",
292
292
  "@orkestrel/guide": "^0.0.10",
293
- "@orkestrel/scaffold": "^0.0.29",
293
+ "@orkestrel/scaffold": "^0.0.30",
294
294
  "@types/node": "^26.2.0",
295
295
  oxfmt: "^0.62.0",
296
296
  oxlint: "^1.77.0",
@@ -482,6 +482,7 @@ const resolve = {
482
482
  name: { label: 'src:browser', color: 'yellow' },
483
483
  include: ['tests/src/browser/**/*.test.ts'],
484
484
  {{exclude}} setupFiles: ['./tests/setup.ts', './tests/setupBrowser.ts'],
485
+ {{global}}
485
486
  browser: {
486
487
  enabled: true,
487
488
  provider: playwright(browserOptions),
@@ -3374,7 +3375,8 @@ function blueprintToRootVite(blueprint) {
3374
3375
  factories.push((0, _orkestrel_template.fillTemplate)(CONFIG_TEMPLATES.factories.src.browser, {
3375
3376
  external: core ? "external: (id: string) => id === '@src/core' || id.startsWith('@orkestrel/')," : "external: (id: string) => id.startsWith('@orkestrel/'),",
3376
3377
  output: core ? " output: { paths: { '@src/core': '../core/index.js' } }," : " output: {},",
3377
- exclude: core ? " exclude: ['tests/src/core/**/*.test.ts'],\n" : ""
3378
+ exclude: core ? " exclude: ['tests/src/core/**/*.test.ts'],\n" : "",
3379
+ global: blueprint.global ? " globalSetup: ['./tests/setupGlobal.ts'],\n" : ""
3378
3380
  }));
3379
3381
  projects.push("srcBrowser");
3380
3382
  }