From dc303a8ee8a2ceaae37e4da4ac4ed64035793d59 Mon Sep 17 00:00:00 2001 From: morluto <76467478+morluto@users.noreply.github.com> Date: Mon, 12 Oct 2026 04:33:51 +0800 Subject: [PATCH] test(javascript): classify artifact workflows as boundary tests Move the six JavaScript application suites that read production artifacts or launch compiled analysis workers out of composition. Focused test planning now prepares their runtime prerequisites instead of treating them as source-only tests. Validation: all six relocated suites and adjacent artifact/reference suites pass (70 tests across eight files); discovery finds every test exactly once. --- .../electronApplicationAnalysis.test.ts | 14 +++---- .../electronOptionKeys.test.ts | 6 +-- .../javascriptArtifactReconstruction.test.ts | 38 +++++++++---------- .../javascriptBundlerAdapters.test.ts | 4 +- .../javascriptHtmlReferenceResolution.test.ts | 4 +- .../javascriptModuleRelationships.test.ts | 6 +-- 6 files changed, 36 insertions(+), 36 deletions(-) rename tests/{composition => boundary/filesystem}/javascript-applications/electronApplicationAnalysis.test.ts (95%) rename tests/{composition => boundary/filesystem}/javascript-applications/electronOptionKeys.test.ts (95%) rename tests/{composition => boundary/filesystem}/javascript-applications/javascriptArtifactReconstruction.test.ts (93%) rename tests/{composition => boundary/filesystem}/javascript-applications/javascriptBundlerAdapters.test.ts (98%) rename tests/{composition => boundary/filesystem}/javascript-applications/javascriptHtmlReferenceResolution.test.ts (95%) rename tests/{composition => boundary/filesystem}/javascript-applications/javascriptModuleRelationships.test.ts (97%) diff --git a/tests/composition/javascript-applications/electronApplicationAnalysis.test.ts b/tests/boundary/filesystem/javascript-applications/electronApplicationAnalysis.test.ts similarity index 95% rename from tests/composition/javascript-applications/electronApplicationAnalysis.test.ts rename to tests/boundary/filesystem/javascript-applications/electronApplicationAnalysis.test.ts index 90d7e2504..795075c99 100644 --- a/tests/composition/javascript-applications/electronApplicationAnalysis.test.ts +++ b/tests/boundary/filesystem/javascript-applications/electronApplicationAnalysis.test.ts @@ -3,14 +3,14 @@ import { join } from "node:path"; import { describe, expect, it } from "vitest"; -import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; +import { createTestTempDirectory } from "../../../fixtures/temporaryDirectory.js"; -import { analyzeJavaScriptApplication } from "../../support/javascriptApplicationScope.js"; -import { reconstructJavaScriptArtifact } from "../../support/javascriptApplicationScope.js"; -import { parseEvidence } from "../../../src/domain/evidence.js"; -import { parseJavaScriptApplicationGraph } from "../../../src/domain/javascript/javascriptApplicationGraph.js"; -import { analyzeJavaScriptApplicationInputSchema } from "../../../src/domain/javascript/javascriptApplicationAnalysis.js"; -import { writeElectronBoundaryFixture } from "../../fixtures/electronBoundaryApplication.js"; +import { analyzeJavaScriptApplication } from "../../../support/javascriptApplicationScope.js"; +import { reconstructJavaScriptArtifact } from "../../../support/javascriptApplicationScope.js"; +import { parseEvidence } from "../../../../src/domain/evidence.js"; +import { parseJavaScriptApplicationGraph } from "../../../../src/domain/javascript/javascriptApplicationGraph.js"; +import { analyzeJavaScriptApplicationInputSchema } from "../../../../src/domain/javascript/javascriptApplicationAnalysis.js"; +import { writeElectronBoundaryFixture } from "../../../fixtures/electronBoundaryApplication.js"; describe("static Electron application analysis", () => { it("accepts relative paths and rejects caller-selected analysis bounds", () => { diff --git a/tests/composition/javascript-applications/electronOptionKeys.test.ts b/tests/boundary/filesystem/javascript-applications/electronOptionKeys.test.ts similarity index 95% rename from tests/composition/javascript-applications/electronOptionKeys.test.ts rename to tests/boundary/filesystem/javascript-applications/electronOptionKeys.test.ts index 54cf4c11b..1b1c0325a 100644 --- a/tests/composition/javascript-applications/electronOptionKeys.test.ts +++ b/tests/boundary/filesystem/javascript-applications/electronOptionKeys.test.ts @@ -2,9 +2,9 @@ import { writeFile } from "node:fs/promises"; import { join } from "node:path"; import { describe, expect, it } from "vitest"; -import { reconstructJavaScriptArtifact } from "../../support/javascriptApplicationScope.js"; -import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; -import { parseJavaScriptApplicationGraph } from "../../../src/domain/javascript/javascriptApplicationGraph.js"; +import { reconstructJavaScriptArtifact } from "../../../support/javascriptApplicationScope.js"; +import { createTestTempDirectory } from "../../../fixtures/temporaryDirectory.js"; +import { parseJavaScriptApplicationGraph } from "../../../../src/domain/javascript/javascriptApplicationGraph.js"; const PRELOAD = '{ preload: "./preload.js", sandbox: true }'; const EXPLICIT = `webPreferences: ${PRELOAD}`; diff --git a/tests/composition/javascript-applications/javascriptArtifactReconstruction.test.ts b/tests/boundary/filesystem/javascript-applications/javascriptArtifactReconstruction.test.ts similarity index 93% rename from tests/composition/javascript-applications/javascriptArtifactReconstruction.test.ts rename to tests/boundary/filesystem/javascript-applications/javascriptArtifactReconstruction.test.ts index 65dd20a35..6b7253b6d 100644 --- a/tests/composition/javascript-applications/javascriptArtifactReconstruction.test.ts +++ b/tests/boundary/filesystem/javascript-applications/javascriptArtifactReconstruction.test.ts @@ -1,7 +1,7 @@ import { primitiveCandidateExpansionSource, primitiveByteExpansionSource, -} from "../../fixtures/javascriptPrimitiveExpansion.js"; +} from "../../../fixtures/javascriptPrimitiveExpansion.js"; import { createHash } from "node:crypto"; import { mkdir, readFile, rm, writeFile } from "node:fs/promises"; import { join } from "node:path"; @@ -9,47 +9,47 @@ import { join } from "node:path"; import { createPackageWithOptions } from "@electron/asar"; import { expect, it } from "vitest"; -import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; +import { createTestTempDirectory } from "../../../fixtures/temporaryDirectory.js"; import { reconstructJavaScriptArtifact, readJavaScriptArtifactFiles, -} from "../../support/javascriptApplicationScope.js"; +} from "../../../support/javascriptApplicationScope.js"; import { analyzeJavaScriptArtifactFiles, analyzeAndProjectJavaScriptArtifactFiles, -} from "../../../src/application/javascript/JavaScriptArtifactAnalysis.js"; -import { buildJavaScriptArtifactGraph } from "../../../src/application/javascript/JavaScriptArtifactGraphBuilder.js"; +} from "../../../../src/application/javascript/JavaScriptArtifactAnalysis.js"; +import { buildJavaScriptArtifactGraph } from "../../../../src/application/javascript/JavaScriptArtifactGraphBuilder.js"; import { buildJavaScriptSemanticGraph, createJavaScriptSemanticGraphProjection, projectJavaScriptSemanticFileSteps, -} from "../../../src/application/javascript/JavaScriptSemanticGraphBuilder.js"; +} from "../../../../src/application/javascript/JavaScriptSemanticGraphBuilder.js"; import { projectJavaScriptModuleSemantics, type JavaScriptModuleSemanticIr, -} from "../../../src/domain/javascript/javascriptModuleSemanticIr.js"; -import type { JavaScriptStaticAnalysis } from "../../../src/domain/javascript/javascriptStaticAnalysisTypes.js"; -import type { JavaScriptArtifactFile } from "../../../src/domain/javascript/javascriptArtifactFiles.js"; -import { completeJavaScriptAnalysisSteps } from "../../../src/application/javascript/JavaScriptAnalysisControl.js"; +} from "../../../../src/domain/javascript/javascriptModuleSemanticIr.js"; +import type { JavaScriptStaticAnalysis } from "../../../../src/domain/javascript/javascriptStaticAnalysisTypes.js"; +import type { JavaScriptArtifactFile } from "../../../../src/domain/javascript/javascriptArtifactFiles.js"; +import { completeJavaScriptAnalysisSteps } from "../../../../src/application/javascript/JavaScriptAnalysisControl.js"; import { writeJavaScriptAnalysisTransfer, readJavaScriptAnalysisTransfer, -} from "../../../src/javascript/analysis/JavaScriptAnalysisTransfer.js"; -import { javaScriptWorkerStaticAnalysisSchema } from "../../../src/javascript/analysis/JavaScriptAnalysisWorkerSchemas.js"; -import { createJavaScriptArtifactReader } from "../../../src/artifacts/javascript/JavaScriptArtifactReader.js"; +} from "../../../../src/javascript/analysis/JavaScriptAnalysisTransfer.js"; +import { javaScriptWorkerStaticAnalysisSchema } from "../../../../src/javascript/analysis/JavaScriptAnalysisWorkerSchemas.js"; +import { createJavaScriptArtifactReader } from "../../../../src/artifacts/javascript/JavaScriptArtifactReader.js"; import { scanCanonicalArtifactInventory, scanArtifactInventory, -} from "../../fixtures/artifactInventory.js"; -import { parseJavaScriptApplicationGraph } from "../../../src/domain/javascript/javascriptApplicationGraph.js"; -import { javascriptApplicationAnalysisResultSchema } from "../../../src/domain/javascript/javascriptApplicationAnalysis.js"; +} from "../../../fixtures/artifactInventory.js"; +import { parseJavaScriptApplicationGraph } from "../../../../src/domain/javascript/javascriptApplicationGraph.js"; +import { javascriptApplicationAnalysisResultSchema } from "../../../../src/domain/javascript/javascriptApplicationAnalysis.js"; import { createJavaScriptSemanticGraph, isValidatedImmutableJavaScriptSemanticGraph, -} from "../../../src/domain/javascript/javascriptSemanticGraph.js"; -import { parseJavaScriptSemanticGraph } from "../../../src/domain/javascript/javascriptSemanticGraphSerialization.js"; -import { writeJavaScriptArtifactFixture } from "../../fixtures/javascriptArtifactApplication.js"; +} from "../../../../src/domain/javascript/javascriptSemanticGraph.js"; +import { parseJavaScriptSemanticGraph } from "../../../../src/domain/javascript/javascriptSemanticGraphSerialization.js"; +import { writeJavaScriptArtifactFixture } from "../../../fixtures/javascriptArtifactApplication.js"; it("reports file progress and honors cancellation before the next source", async () => { const root = await fixtureDirectory(); diff --git a/tests/composition/javascript-applications/javascriptBundlerAdapters.test.ts b/tests/boundary/filesystem/javascript-applications/javascriptBundlerAdapters.test.ts similarity index 98% rename from tests/composition/javascript-applications/javascriptBundlerAdapters.test.ts rename to tests/boundary/filesystem/javascript-applications/javascriptBundlerAdapters.test.ts index 0aa829798..f5b425072 100644 --- a/tests/composition/javascript-applications/javascriptBundlerAdapters.test.ts +++ b/tests/boundary/filesystem/javascript-applications/javascriptBundlerAdapters.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; +import { createTestTempDirectory } from "../../../fixtures/temporaryDirectory.js"; import { findChunkNode, @@ -8,7 +8,7 @@ import { findModuleNodeByKey, reconstructJavaScriptFixture, writeFixtureFiles, -} from "../../support/javascriptApplicationFixture.js"; +} from "../../../support/javascriptApplicationFixture.js"; describe("Webpack and Rspack runtime adapters", () => { it("recovers runtime entry modules, async chunks, and factory require aliases", async () => { diff --git a/tests/composition/javascript-applications/javascriptHtmlReferenceResolution.test.ts b/tests/boundary/filesystem/javascript-applications/javascriptHtmlReferenceResolution.test.ts similarity index 95% rename from tests/composition/javascript-applications/javascriptHtmlReferenceResolution.test.ts rename to tests/boundary/filesystem/javascript-applications/javascriptHtmlReferenceResolution.test.ts index 86faea2bf..250937950 100644 --- a/tests/composition/javascript-applications/javascriptHtmlReferenceResolution.test.ts +++ b/tests/boundary/filesystem/javascript-applications/javascriptHtmlReferenceResolution.test.ts @@ -3,8 +3,8 @@ import { join } from "node:path"; import { expect, it } from "vitest"; -import { reconstructJavaScriptArtifact } from "../../support/javascriptApplicationScope.js"; -import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; +import { reconstructJavaScriptArtifact } from "../../../support/javascriptApplicationScope.js"; +import { createTestTempDirectory } from "../../../fixtures/temporaryDirectory.js"; it("resolves empty-path HTML script URLs against their canonical base path", async () => { const root = await createTestTempDirectory("rea-html-empty-reference-"); diff --git a/tests/composition/javascript-applications/javascriptModuleRelationships.test.ts b/tests/boundary/filesystem/javascript-applications/javascriptModuleRelationships.test.ts similarity index 97% rename from tests/composition/javascript-applications/javascriptModuleRelationships.test.ts rename to tests/boundary/filesystem/javascript-applications/javascriptModuleRelationships.test.ts index ca6981ebb..756a350dd 100644 --- a/tests/composition/javascript-applications/javascriptModuleRelationships.test.ts +++ b/tests/boundary/filesystem/javascript-applications/javascriptModuleRelationships.test.ts @@ -3,8 +3,8 @@ import { join } from "node:path"; import { describe, expect, it } from "vitest"; -import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; -import { parseJavaScriptApplicationGraph } from "../../../src/domain/javascript/javascriptApplicationGraph.js"; +import { createTestTempDirectory } from "../../../fixtures/temporaryDirectory.js"; +import { parseJavaScriptApplicationGraph } from "../../../../src/domain/javascript/javascriptApplicationGraph.js"; import { findExportNode, @@ -12,7 +12,7 @@ import { findSourceModule, reconstructJavaScriptFixture, writeFixtureFiles, -} from "../../support/javascriptApplicationFixture.js"; +} from "../../../support/javascriptApplicationFixture.js"; describe("CommonJS and ESM module relationships", () => { it("composes bindings, re-exports, dynamic imports, and JSON modules", async () => {