diff --git a/packages/layout-engine/contracts/bunfig.toml b/packages/layout-engine/contracts/bunfig.toml new file mode 100644 index 0000000000..26aaecdbf6 --- /dev/null +++ b/packages/layout-engine/contracts/bunfig.toml @@ -0,0 +1,3 @@ +[test] +timeout = 5000 +preload = ["./happydom.ts"] diff --git a/packages/layout-engine/contracts/happydom.ts b/packages/layout-engine/contracts/happydom.ts new file mode 100644 index 0000000000..099c99efcc --- /dev/null +++ b/packages/layout-engine/contracts/happydom.ts @@ -0,0 +1,13 @@ +import { Window } from 'happy-dom'; + +const window = new Window(); + +// Register globals +Object.assign(globalThis, { + window, + document: window.document, + HTMLElement: window.HTMLElement, + Element: window.Element, + Node: window.Node, + Blob: window.Blob, +}); diff --git a/packages/layout-engine/contracts/package.json b/packages/layout-engine/contracts/package.json index 4d6afd8aba..ce9bff2cf7 100644 --- a/packages/layout-engine/contracts/package.json +++ b/packages/layout-engine/contracts/package.json @@ -15,6 +15,9 @@ }, "scripts": { "build": "tsc --project tsconfig.json", - "test": "vitest run" + "test": "bun test" + }, + "devDependencies": { + "happy-dom": "catalog:" } } diff --git a/packages/layout-engine/contracts/src/engines/__tests__/image-wrap.test.ts b/packages/layout-engine/contracts/src/engines/__tests__/image-wrap.test.ts index b71c008152..bc20eaf162 100644 --- a/packages/layout-engine/contracts/src/engines/__tests__/image-wrap.test.ts +++ b/packages/layout-engine/contracts/src/engines/__tests__/image-wrap.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'bun:test'; import { computeWrapExclusion, scaleWrapPolygon } from '../image-wrap.js'; describe('engines-image-wrap scaleWrapPolygon', () => { diff --git a/packages/layout-engine/contracts/src/engines/__tests__/lists.test.ts b/packages/layout-engine/contracts/src/engines/__tests__/lists.test.ts index bf7981e4a5..b0d1a80c42 100644 --- a/packages/layout-engine/contracts/src/engines/__tests__/lists.test.ts +++ b/packages/layout-engine/contracts/src/engines/__tests__/lists.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'bun:test'; import { computeListIndent, formatListLabel } from '../lists.js'; describe('engines-lists formatListLabel', () => { diff --git a/packages/layout-engine/contracts/src/engines/__tests__/paragraph.test.ts b/packages/layout-engine/contracts/src/engines/__tests__/paragraph.test.ts index 7235d2537a..5125898c95 100644 --- a/packages/layout-engine/contracts/src/engines/__tests__/paragraph.test.ts +++ b/packages/layout-engine/contracts/src/engines/__tests__/paragraph.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'bun:test'; import { resolveSpacingIndent } from '../paragraph.js'; describe('engines-paragraph resolveSpacingIndent', () => { diff --git a/packages/layout-engine/contracts/src/engines/tabs.test.ts b/packages/layout-engine/contracts/src/engines/tabs.test.ts index 427d1abc36..fb568f323f 100644 --- a/packages/layout-engine/contracts/src/engines/tabs.test.ts +++ b/packages/layout-engine/contracts/src/engines/tabs.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'bun:test'; import { calculateTabWidth, computeTabStops, layoutWithTabs } from './tabs.js'; describe('engines-tabs computeTabStops', () => { diff --git a/packages/layout-engine/contracts/src/index.test.ts b/packages/layout-engine/contracts/src/index.test.ts index 4f53d4f237..57a0ad2304 100644 --- a/packages/layout-engine/contracts/src/index.test.ts +++ b/packages/layout-engine/contracts/src/index.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'bun:test'; import { extractHeaderFooterSpace } from './index.js'; import type { FlowBlock, Layout, PainterDOM, PainterPDF } from './index.js'; diff --git a/packages/layout-engine/contracts/src/justify-utils.test.ts b/packages/layout-engine/contracts/src/justify-utils.test.ts index 57943fcdd7..0cc32c505d 100644 --- a/packages/layout-engine/contracts/src/justify-utils.test.ts +++ b/packages/layout-engine/contracts/src/justify-utils.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'bun:test'; import { SPACE_CHARS, shouldApplyJustify, diff --git a/packages/layout-engine/contracts/src/pm-range.test.ts b/packages/layout-engine/contracts/src/pm-range.test.ts index 2b5991cbcd..a5493d67c3 100644 --- a/packages/layout-engine/contracts/src/pm-range.test.ts +++ b/packages/layout-engine/contracts/src/pm-range.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'bun:test'; import { computeFragmentPmRange, computeLinePmRange } from './index.js'; import type { Line, ParagraphBlock } from './index.js'; diff --git a/packages/layout-engine/contracts/vitest.config.mjs b/packages/layout-engine/contracts/vitest.config.mjs deleted file mode 100644 index 29bb879cd9..0000000000 --- a/packages/layout-engine/contracts/vitest.config.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import { defineConfig } from 'vitest/config'; -import baseConfig from '../../../vitest.baseConfig'; - -export default defineConfig({ - ...baseConfig, - test: { - // Use happy-dom for faster tests (set VITEST_DOM=jsdom to use jsdom) - environment: process.env.VITEST_DOM || 'happy-dom', - include: ['src/**/*.test.ts'] - } -}); diff --git a/packages/layout-engine/geometry-utils/bunfig.toml b/packages/layout-engine/geometry-utils/bunfig.toml new file mode 100644 index 0000000000..554f6fb8f2 --- /dev/null +++ b/packages/layout-engine/geometry-utils/bunfig.toml @@ -0,0 +1,2 @@ +[test] +timeout = 5000 diff --git a/packages/layout-engine/geometry-utils/package.json b/packages/layout-engine/geometry-utils/package.json index fbb768d626..b86c219657 100644 --- a/packages/layout-engine/geometry-utils/package.json +++ b/packages/layout-engine/geometry-utils/package.json @@ -10,10 +10,9 @@ }, "scripts": { "build": "tsc --project tsconfig.json --noEmit", - "test": "vitest run" + "test": "bun test" }, "devDependencies": { - "typescript": "catalog:", - "vitest": "catalog:" + "typescript": "catalog:" } } diff --git a/packages/layout-engine/geometry-utils/src/index.test.ts b/packages/layout-engine/geometry-utils/src/index.test.ts index 6e89685be0..5faebbb0a6 100644 --- a/packages/layout-engine/geometry-utils/src/index.test.ts +++ b/packages/layout-engine/geometry-utils/src/index.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'bun:test'; import { applyMatrix, calculateRotatedBounds, diff --git a/packages/layout-engine/geometry-utils/vitest.config.mjs b/packages/layout-engine/geometry-utils/vitest.config.mjs deleted file mode 100644 index 2368bd9853..0000000000 --- a/packages/layout-engine/geometry-utils/vitest.config.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import { defineConfig } from 'vitest/config'; -import baseConfig from '../../../vitest.baseConfig'; - -export default defineConfig({ - ...baseConfig, - test: { - environment: 'node', - include: ['src/**/*.test.ts'] - } -}); diff --git a/packages/layout-engine/style-engine/bunfig.toml b/packages/layout-engine/style-engine/bunfig.toml new file mode 100644 index 0000000000..554f6fb8f2 --- /dev/null +++ b/packages/layout-engine/style-engine/bunfig.toml @@ -0,0 +1,2 @@ +[test] +timeout = 5000 diff --git a/packages/layout-engine/style-engine/package.json b/packages/layout-engine/style-engine/package.json index 0ec8a00212..fc89ed4b48 100644 --- a/packages/layout-engine/style-engine/package.json +++ b/packages/layout-engine/style-engine/package.json @@ -17,14 +17,13 @@ }, "scripts": { "build": "tsc --project tsconfig.json --noEmit", - "test": "vitest run" + "test": "bun test" }, "dependencies": { "@superdoc/contracts": "workspace:*", "@superdoc/font-utils": "workspace:*" }, "devDependencies": { - "typescript": "catalog:", - "vitest": "catalog:" + "typescript": "catalog:" } } diff --git a/packages/layout-engine/style-engine/src/cascade.test.ts b/packages/layout-engine/style-engine/src/cascade.test.ts index b9940714ee..470d3e705e 100644 --- a/packages/layout-engine/style-engine/src/cascade.test.ts +++ b/packages/layout-engine/style-engine/src/cascade.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'bun:test'; import { combineProperties, combineRunProperties, combineIndentProperties } from './cascade.js'; describe('cascade - combineProperties', () => { diff --git a/packages/layout-engine/style-engine/src/index.test.ts b/packages/layout-engine/style-engine/src/index.test.ts index f21034729c..1188a62646 100644 --- a/packages/layout-engine/style-engine/src/index.test.ts +++ b/packages/layout-engine/style-engine/src/index.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it, beforeEach } from 'vitest'; +import { describe, expect, it, beforeEach } from 'bun:test'; import { resolveSdtMetadata, clearSdtMetadataCache } from './index.js'; describe('resolveSdtMetadata', () => { diff --git a/packages/layout-engine/style-engine/src/ooxml/index.test.ts b/packages/layout-engine/style-engine/src/ooxml/index.test.ts index d47944ae13..0022013d48 100644 --- a/packages/layout-engine/style-engine/src/ooxml/index.test.ts +++ b/packages/layout-engine/style-engine/src/ooxml/index.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'bun:test'; import { resolveStyleChain, getNumberingProperties, diff --git a/packages/layout-engine/style-engine/vitest.config.mjs b/packages/layout-engine/style-engine/vitest.config.mjs deleted file mode 100644 index bfc67bf9d0..0000000000 --- a/packages/layout-engine/style-engine/vitest.config.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import { defineConfig } from 'vitest/config'; -import baseConfig from '../../../vitest.baseConfig'; - -export default defineConfig({ - ...baseConfig, - test: { - globals: true, - }, -}); diff --git a/packages/word-layout/bunfig.toml b/packages/word-layout/bunfig.toml new file mode 100644 index 0000000000..554f6fb8f2 --- /dev/null +++ b/packages/word-layout/bunfig.toml @@ -0,0 +1,2 @@ +[test] +timeout = 5000 diff --git a/packages/word-layout/package.json b/packages/word-layout/package.json index e7b46ba4da..2b1d795bbf 100644 --- a/packages/word-layout/package.json +++ b/packages/word-layout/package.json @@ -15,9 +15,6 @@ }, "scripts": { "build": "tsc --project tsconfig.json", - "test": "vitest run" - }, - "devDependencies": { - "vitest": "catalog:" + "test": "bun test" } } diff --git a/packages/word-layout/tests/numbering-manager.test.ts b/packages/word-layout/tests/numbering-manager.test.ts index 606a196670..c913454d99 100644 --- a/packages/word-layout/tests/numbering-manager.test.ts +++ b/packages/word-layout/tests/numbering-manager.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'bun:test'; import { createNumberingManager } from '../src/numbering-manager.js'; diff --git a/packages/word-layout/tests/unit-conversions.test.ts b/packages/word-layout/tests/unit-conversions.test.ts index e23927cb26..d85368c36e 100644 --- a/packages/word-layout/tests/unit-conversions.test.ts +++ b/packages/word-layout/tests/unit-conversions.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'bun:test'; import { TWIPS_PER_PIXEL, diff --git a/packages/word-layout/tests/word-layout.test.ts b/packages/word-layout/tests/word-layout.test.ts index 1e0de992f5..a6ff75369a 100644 --- a/packages/word-layout/tests/word-layout.test.ts +++ b/packages/word-layout/tests/word-layout.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'bun:test'; import { computeWordParagraphLayout, DEFAULT_LIST_HANGING_PX } from '../src/index.js'; import type { WordParagraphLayoutInput } from '../src/types.js'; diff --git a/packages/word-layout/vitest.config.mjs b/packages/word-layout/vitest.config.mjs deleted file mode 100644 index 5cb415c834..0000000000 --- a/packages/word-layout/vitest.config.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import { defineConfig } from 'vitest/config'; -import baseConfig from '../../vitest.baseConfig'; - -export default defineConfig({ - ...baseConfig, - test: { - globals: true, - }, -}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 47811918e3..209362c84e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -642,16 +642,17 @@ importers: packages/layout-engine: {} - packages/layout-engine/contracts: {} + packages/layout-engine/contracts: + devDependencies: + happy-dom: + specifier: 'catalog:' + version: 20.3.4 packages/layout-engine/geometry-utils: devDependencies: typescript: specifier: 'catalog:' version: 5.9.3 - vitest: - specifier: 'catalog:' - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.2)(happy-dom@20.3.4)(jiti@2.6.1)(jsdom@27.3.0(canvas@3.2.0)(postcss@8.5.6))(tsx@4.21.0)(yaml@2.8.2) packages/layout-engine/layout-bridge: dependencies: @@ -788,9 +789,6 @@ importers: typescript: specifier: 'catalog:' version: 5.9.3 - vitest: - specifier: 'catalog:' - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.2)(happy-dom@20.3.4)(jiti@2.6.1)(jsdom@27.3.0(canvas@3.2.0)(postcss@8.5.6))(tsx@4.21.0)(yaml@2.8.2) packages/layout-engine/tests: dependencies: @@ -1170,11 +1168,7 @@ importers: specifier: 'catalog:' version: 7.2.7(@types/node@22.19.2)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) - packages/word-layout: - devDependencies: - vitest: - specifier: 'catalog:' - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.2)(happy-dom@20.3.4)(jiti@2.6.1)(jsdom@27.3.0(canvas@3.2.0)(postcss@8.5.6))(tsx@4.21.0)(yaml@2.8.2) + packages/word-layout: {} shared/common: devDependencies: