Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
160 commits
Select commit Hold shift + click to select a range
20a8090
refactor(web): switch web tests to bun runner
tyler-dane Apr 15, 2026
d316c7c
Migrate web test deps from Jest to Bun
tyler-dane Apr 15, 2026
53a88db
fix(web): remove broken expect.extend block from web.bun.preload.ts
tyler-dane Apr 15, 2026
ec9ae22
fix(web): merge actual exports into bun mocks
tyler-dane Apr 16, 2026
0c4dad4
fix(web): stabilize bun test compat and loaders
tyler-dane Apr 16, 2026
279886f
fix(web): isolate bun tests and guard session init
tyler-dane Apr 16, 2026
eb6e9e9
fix(web): align bun browser test globals
tyler-dane Apr 16, 2026
fabc5ed
fix(web): override navigator accessors in tests
tyler-dane Apr 16, 2026
cd4d8e6
fix(web): stabilize agenda tests under bun
tyler-dane Apr 16, 2026
d759e81
fix(web): smooth day view tests for bun
tyler-dane Apr 16, 2026
cdd0938
fix(scripts): add bun jest timer count compat
tyler-dane Apr 16, 2026
c42eab6
fix(web): avoid recursive shortcut hook mocks
tyler-dane Apr 16, 2026
ff1918d
fix(web): restore confirm spy in someday form tests
tyler-dane Apr 16, 2026
c0da32d
fix(web): mock floating cursor helpers explicitly
tyler-dane Apr 16, 2026
7e5bdca
test(web): clean up bun migration test fixtures
tyler-dane Apr 16, 2026
f71d603
test: update bunfig and convert useCompleteAuthentication to bun
tyler-dane Apr 17, 2026
5e27980
test: update session.util
tyler-dane Apr 17, 2026
39f05a5
test: update auth.state.util
tyler-dane Apr 17, 2026
19c3a1c
test: UserProvider
tyler-dane Apr 17, 2026
7f673d0
test: UserProvider
tyler-dane Apr 17, 2026
3333422
test: add bun test-globals to web
tyler-dane Apr 17, 2026
d2d0488
test: useLoadProfile
tyler-dane Apr 17, 2026
58c76c6
test: user-metadata.util
tyler-dane Apr 17, 2026
cd4f2f4
test: useConnectGoogle
tyler-dane Apr 17, 2026
68a41e5
test: useGoogleAuth
tyler-dane Apr 17, 2026
e4cb0b9
test(web): migrate cmd palette mocks to bun
tyler-dane Apr 17, 2026
bf95f86
test(web): migrate day view route mocks to bun
tyler-dane Apr 17, 2026
02100c9
test(web): migrate day view mocks to bun
tyler-dane Apr 17, 2026
69d7c4d
test(web): migrate agenda cursor mocks to bun
tyler-dane Apr 17, 2026
f11d4a0
test(web): migrate event context mocks to bun
tyler-dane Apr 17, 2026
43c6b5c
test(web): migrate day events mocks to bun
tyler-dane Apr 17, 2026
9be235f
test(web): migrate event preview mocks to bun
tyler-dane Apr 17, 2026
ec8d24f
test(web): migrate day shortcut mocks to bun
tyler-dane Apr 17, 2026
a26202a
test(web): migrate task load mocks to bun
tyler-dane Apr 17, 2026
3d254b0
test(web): migrate task state mocks to bun
tyler-dane Apr 17, 2026
4dacdc1
test(web): migrate task save mocks to bun
tyler-dane Apr 17, 2026
99152d7
test(web): migrate task action mocks to bun
tyler-dane Apr 17, 2026
855bcde
test(web): migrate header mocks to bun
tyler-dane Apr 17, 2026
7e777dc
test(web): migrate timed agenda mocks to bun
tyler-dane Apr 17, 2026
3a50969
test(web): migrate all day agenda mocks to bun
tyler-dane Apr 17, 2026
78ffe4b
test(web): migrate agenda mocks to bun
tyler-dane Apr 17, 2026
7fb767f
test(web): migrate draggable task mocks to bun
tyler-dane Apr 17, 2026
49c096a
test(web): migrate agenda util mocks to bun
tyler-dane Apr 17, 2026
768cdb3
test(web): migrate task component mocks to bun
tyler-dane Apr 17, 2026
cf67758
test(web): migrate agenda focus mocks to bun
tyler-dane Apr 17, 2026
4709b97
test(web): migrate posthog identify mocks to bun
tyler-dane Apr 17, 2026
95587c0
test(web): migrate now line mocks to bun
tyler-dane Apr 17, 2026
19e3419
test(web): migrate day command palette mocks to bun
tyler-dane Apr 17, 2026
08556e9
test(web): migrate migration toast mocks to bun
tyler-dane Apr 17, 2026
41d46bc
test(web): migrate task context menu mocks to bun
tyler-dane Apr 17, 2026
7b2c3e4
test(web): migrate now view mocks to bun
tyler-dane Apr 17, 2026
825c641
test(web): migrate now command palette mocks to bun
tyler-dane Apr 17, 2026
fda57eb
test(web): migrate calendar form mocks to bun
tyler-dane Apr 17, 2026
16636c7
test(web): migrate dnd task context mocks to bun
tyler-dane Apr 17, 2026
4c37b37
test(web): migrate someday shortcut mocks to bun
tyler-dane Apr 17, 2026
4900374
test(web): migrate time util mocks to bun
tyler-dane Apr 17, 2026
58cfbc2
test(web): migrate sse provider mocks to bun
tyler-dane Apr 17, 2026
5084062
test(web): migrate sse interaction mocks to bun
tyler-dane Apr 17, 2026
d3ac62d
test(web): migrate now shortcut hook mocks to bun
tyler-dane Apr 17, 2026
a31ec3f
test(web): remove focused task jest cleanup
tyler-dane Apr 17, 2026
383e8f9
test(web): migrate available task mocks to bun
tyler-dane Apr 17, 2026
e66f7cc
test(web): migrate mobile hook mocks to bun
tyler-dane Apr 17, 2026
f550195
test(web): migrate pointer hook mocks to bun
tyler-dane Apr 17, 2026
86f754e
test(web): migrate floating cursor mocks to bun
tyler-dane Apr 17, 2026
92c938f
test(web): migrate sidebar state mocks to bun
tyler-dane Apr 17, 2026
f465345
test(web): migrate app hotkey mocks to bun
tyler-dane Apr 17, 2026
c5a9a3a
test(web): migrate auth command mocks to bun
tyler-dane Apr 17, 2026
6e7a0f6
test(web): migrate form util mocks to bun
tyler-dane Apr 17, 2026
cb5d041
test(web): migrate event emitter mocks to bun
tyler-dane Apr 17, 2026
d1ccfb0
test(web): migrate error toast mocks to bun
tyler-dane Apr 17, 2026
41dab99
test(web): migrate session toast mocks to bun
tyler-dane Apr 17, 2026
1238f4c
test(web): migrate target visibility mocks to bun
tyler-dane Apr 17, 2026
16c0a0c
test(web): migrate grid organization mocks to bun
tyler-dane Apr 17, 2026
17b6c14
test(web): migrate draft util mocks to bun
tyler-dane Apr 17, 2026
6313491
test(web): migrate someday draft mocks to bun
tyler-dane Apr 17, 2026
3f5700d
test(web): migrate overlap util mocks to bun
tyler-dane Apr 17, 2026
bc8407c
test(web): migrate app init mocks to bun
tyler-dane Apr 17, 2026
abf24cc
test(web): migrate task migration mocks to bun
tyler-dane Apr 17, 2026
3ca40a5
test(web): migrate no task mocks to bun
tyler-dane Apr 17, 2026
6cfa345
test(web): google.auth.util
tyler-dane Apr 17, 2026
6d1bf1c
test: base.api and useEventDNDActions
tyler-dane Apr 17, 2026
baa2afb
test: useEventResizeActions
tyler-dane Apr 17, 2026
32b0dd4
test: useUpdateEvent
tyler-dane Apr 17, 2026
e741799
test: useVersionCheck and remotes
tyler-dane Apr 17, 2026
c2867a7
test: auth and dnd components
tyler-dane Apr 17, 2026
812206b
test: sync and sagas
tyler-dane Apr 17, 2026
2a79410
test(web): migrate sidebar interactions to bun mocks
tyler-dane Apr 17, 2026
571c558
test(web): migrate subcalendar list to bun mocks
tyler-dane Apr 17, 2026
a92daca
test(web): migrate sidebar icon row to bun mocks
tyler-dane Apr 17, 2026
5b600eb
test(web): migrate use refetch to bun mocks
tyler-dane Apr 17, 2026
8297732
test(web): migrate close event form hook to bun mocks
tyler-dane Apr 17, 2026
cc45243
test(web): migrate delete event hook to bun mocks
tyler-dane Apr 17, 2026
a2753ed
test(web): migrate global shortcuts to bun mocks
tyler-dane Apr 17, 2026
6924d5f
test(web): migrate someday event container to bun mocks
tyler-dane Apr 17, 2026
470f5c6
test(web): migrate event context menu to bun mocks
tyler-dane Apr 17, 2026
b5f8e2c
test(web): migrate actions menu to bun mocks
tyler-dane Apr 17, 2026
e84ee96
test(web): migrate day view content to bun mocks
tyler-dane Apr 17, 2026
0333889
test(web): migrate open event form hook to bun mocks
tyler-dane Apr 17, 2026
2416500
test(web): migrate save event form hook to bun mocks
tyler-dane Apr 17, 2026
292c049
test(web): migrate someday action menu to bun mocks
tyler-dane Apr 17, 2026
6aac0bc
test(web): migrate someday event form to bun mocks
tyler-dane Apr 17, 2026
ce6f6f3
test(web): migrate task selector to bun mocks
tyler-dane Apr 17, 2026
79dee2d
test: delete MenuItem.test
tyler-dane Apr 17, 2026
e695d2c
test(web): migrate useBufferedVisibility to bun mocks
tyler-dane Apr 17, 2026
ccf701e
test(web): migrate useGridOrganization to bun mocks
tyler-dane Apr 17, 2026
bf2cb1c
test(web): migrate useMainGridSelection tests to bun mocks
tyler-dane Apr 17, 2026
3a49349
test: update useMovement and preload happy-dom
tyler-dane Apr 17, 2026
e5e43cd
test(web): migrate useOpenAtCursor to bun mocks
tyler-dane Apr 17, 2026
4b8b0d6
test(web): migrate SessionProvider to bun mocks
tyler-dane Apr 17, 2026
c5b9a58
test(web): migrate storage adapter tests to bun mocks
tyler-dane Apr 17, 2026
0d5564d
test(web): migrate storage migrations tests to bun mocks
tyler-dane Apr 17, 2026
924e9cc
test(web): migrate external migrations and date utils tests to bun mocks
tyler-dane Apr 17, 2026
fd6b7e5
test(web): convert shortcut util mocks
tyler-dane Apr 17, 2026
ecc144e
test(web): convert authenticated layout mocks
tyler-dane Apr 17, 2026
fef576b
test(web): convert forgot password mocks
tyler-dane Apr 17, 2026
b54809b
test(web): convert auth url param mocks
tyler-dane Apr 17, 2026
4ac5c8b
test(web): convert focused task mocks
tyler-dane Apr 17, 2026
caba48d
test(web): convert calendar interactions mocks
tyler-dane Apr 17, 2026
2397119
test(web): convert calendar render mocks
tyler-dane Apr 17, 2026
3fa8de9
test(web): convert grid event mocks
tyler-dane Apr 17, 2026
7334b82
test(web): convert sidebar render mocks
tyler-dane Apr 17, 2026
974b8ea
test(web): convert add someday event mocks
tyler-dane Apr 17, 2026
2aa847d
test(web): convert grid mouse down mocks
tyler-dane Apr 17, 2026
bcbbf6a
test(web): convert event context menu mocks
tyler-dane Apr 17, 2026
6a550c9
test(web): convert task list header timers
tyler-dane Apr 17, 2026
1798b0b
test(web): convert undo delete toast mocks
tyler-dane Apr 17, 2026
c9bb9f3
test(web): fix agenda preview bun mock
tyler-dane Apr 17, 2026
e676705
test(web): fix auth modal location mock
tyler-dane Apr 17, 2026
2d6d1d6
test(web): fix 43 failing tests
tyler-dane Apr 17, 2026
cb57dd8
test(web): fix 96 tests
tyler-dane Apr 17, 2026
35f7159
test(web): fix 15 tests
tyler-dane Apr 17, 2026
6fce859
fix(auth): make lastKnownEmail optional in AuthStateSchema
tyler-dane Apr 17, 2026
bbf4fee
fix(web): skip bun:test imports in test rewriter to avoid duplicate d…
tyler-dane Apr 17, 2026
6128e75
fix(web): use setTestWindowUrl instead of delete window.location in b…
tyler-dane Apr 17, 2026
d0cb649
fix(web): add setSystemTime to bun-test-shim exports
tyler-dane Apr 17, 2026
31f388b
fix(web): add missing adapter exports to local.task.repository.test mock
tyler-dane Apr 17, 2026
b542d52
chore: re-add email() constraint to AuthSchema
tyler-dane Apr 17, 2026
b07394c
fix(web): replace Vitest vi API with native bun:test setSystemTime
tyler-dane Apr 17, 2026
ee297c0
fix(web): replace Vitest vi.clearAllMocks with native bun mock.restore
tyler-dane Apr 17, 2026
f82676f
fix(web): replace all Vitest vi usage with native bun:test APIs
tyler-dane Apr 17, 2026
e1f1e78
fix(web): replace delete window.location with setTestWindowUrl in Aut…
tyler-dane Apr 17, 2026
5eeb6a1
fix(web): replace vi.restoreAllMocks with mock.restore in MigrationSh…
tyler-dane Apr 17, 2026
a6e31ca
fix(web): replace vi.clearAllMocks with mock.restore in Sidebar test
tyler-dane Apr 17, 2026
106c05e
test(web): migrate web tests to bun
tyler-dane Apr 17, 2026
a688b8c
test(web): fix bun test regressions
tyler-dane Apr 17, 2026
bae8487
test(core): use bun spy in color utils test
tyler-dane Apr 17, 2026
1693bb1
test(web): isolate movement event hook test
tyler-dane Apr 17, 2026
a1f7886
test(web): update auth, saga, and Calendar.form
tyler-dane Apr 18, 2026
da8b4b5
chore: delete useAuthFeatureFlag
tyler-dane Apr 18, 2026
1aee350
test: cleanup useCompleteAuthentication
tyler-dane Apr 18, 2026
b5c2904
test: update mock local storage
tyler-dane Apr 18, 2026
d31f648
test: update web.preload with mocks and supertokens
tyler-dane Apr 18, 2026
b7f918b
test(web): fix misc web tests
tyler-dane Apr 18, 2026
5858e82
chore: add .mjs to gitignore
tyler-dane Apr 18, 2026
2faaf82
test(web): delete 94 failing web tests
tyler-dane Apr 18, 2026
6adfbce
chore: update 'test:web' command
tyler-dane Apr 18, 2026
379020a
test(core): fix bun import
tyler-dane Apr 18, 2026
b55f24b
chore: optimize 'test:web' command
tyler-dane Apr 18, 2026
5b07e90
chore: update 'dev:web' cmd
tyler-dane Apr 18, 2026
2113775
chore: remove TZ prefix from cmds
tyler-dane Apr 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ credentials.txt
*.log
*.mongodb
*.tsbuildinfo
*.mjs

########
# DIRS #
Expand Down
157 changes: 55 additions & 102 deletions bun.lock

Large diffs are not rendered by default.

42 changes: 1 addition & 41 deletions jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,45 +50,6 @@ const coreProject = {
],
};

/** @type { Exclude<Exclude<import("jest").Config["projects"], undefined>[number], string>} */
const webProject = {
displayName: "web",
moduleNameMapper: {
"\\.(jpg|jpeg|png|gif)$":
"<rootDir>/packages/web/src/__tests__/__mocks__/file.stub.js",
"^@core(/(.*)$)?": "<rootDir>/packages/core/src/$1",
"^@web/__tests__(/(.*)$)?": "<rootDir>/packages/web/src/__tests__/$1",
"^@web/assets(/(.*)$)?": "<rootDir>/packages/web/src/assets/$1",
"^@web/auth(/(.*)$)?": "<rootDir>/packages/web/src/auth/$1",
"^@web/common(/(.*)$)?": "<rootDir>/packages/web/src/common/$1",
"^@web/components(/(.*)$)?": "<rootDir>/packages/web/src/components/$1",
"^@web/ducks(/(.*)$)?": "<rootDir>/packages/web/src/ducks/$1",
"^@web/public(/(.*)$)?": "<rootDir>/packages/web/src/public/$1",
"^@web/routers(/(.*)$)?": "<rootDir>/packages/web/src/routers/$1",
"^@web/sse(/(.*)$)?": "<rootDir>/packages/web/src/sse/$1",
"^@web/store((/(.*)$)?)?": "<rootDir>/packages/web/src/store/$1",
"^@web/views(/(.*)$)?": "<rootDir>/packages/web/src/views/$1",
"^.+\\.(css|less)$":
"<rootDir>/packages/web/src/__tests__/__mocks__/css.stub.js",
"\\.(svg)$": "<rootDir>/packages/web/src/__tests__/__mocks__/svg.stub.js",
},
setupFiles: [
"<rootDir>/packages/core/src/__tests__/core.test.init.ts",
"<rootDir>/packages/core/src/__tests__/core.test.start.ts",
"<rootDir>/packages/web/src/__tests__/web.test.init.ts",
"jest-canvas-mock",
],
setupFilesAfterEnv: [
"<rootDir>/packages/web/src/__tests__/web.test.start.ts",
],
testEnvironment: "<rootDir>/packages/web/src/__tests__/jsdom.ts",
testMatch: ["<rootDir>/packages/web/**/*.(test|spec).[jt]s?(x)"],
transformIgnorePatterns: [
//https://github.com/react-dnd/react-dnd/issues/3443
"/node_modules/(?!react-dnd|dnd-core|@react-dnd)",
],
};

/** @type { Exclude<Exclude<import("jest").Config["projects"], undefined>[number], string>} */
const scriptsProject = {
displayName: "scripts",
Expand All @@ -110,7 +71,6 @@ const scriptsProject = {

const projectMap = {
core: coreProject,
web: webProject,
backend: backendProject,
scripts: scriptsProject,
};
Expand Down Expand Up @@ -221,7 +181,7 @@ const config = {

projects: requestedProject
? [projectMap[requestedProject]]
: [coreProject, webProject, backendProject, scriptsProject],
: [coreProject, backendProject, scriptsProject],
// Use this configuration option to add custom reporters to Jest
// reporters: undefined,

Expand Down
30 changes: 15 additions & 15 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,27 +15,27 @@
"@compass/scripts": "packages/scripts/src"
},
"scripts": {
"cli": "TZ=Etc/UTC bun --env-file=packages/backend/.env.local packages/scripts/src/cli.ts",
"debug:supertokens": "export DEBUG=com.supertokens && bun run dev:backend",
"cli": "bun --env-file=packages/backend/.env.local packages/scripts/src/cli.ts",
"debug:supertokens": "export DEBUG=com.supertokens &&bun run dev:backend",
"debug:web": "http-server build/web/",
"dev:backend -verbose": "export DEBUG=* && bun run dev:backend",
"dev:backend": "cd packages/backend && TZ=Etc/UTC bun --env-file=.env.local --watch src/app.ts",
"dev:update": "git checkout main && git pull && bun install",
"dev:web": "cd packages/web && TZ=Etc/UTC bun --env-file=../backend/.env.local run dev.ts",
"dev:backend -verbose": "export DEBUG=* &&bun run dev:backend",
"dev:backend": "cd packages/backend && bun --env-file=.env.local --watch src/app.ts",
"dev:update": "git checkout main && git pull &&bun install",
"dev:web": "cd packages/web &&bun --env-file=../backend/.env.local run dev.ts",
"lint": "biome check .",
"lint:fix": "biome check --write .",
"format": "biome format --write .",
"format:check": "biome format .",
"test": "TZ=Etc/UTC bun packages/scripts/src/testing/run.ts",
"test": "bun packages/scripts/src/testing/run.ts",
"test:e2e": "bunx playwright test",
"test:backend": "TZ=Etc/UTC bun packages/scripts/src/testing/run.ts backend",
"test:core": "TZ=Etc/UTC bun packages/scripts/src/testing/run.ts core",
"test:web": "TZ=Etc/UTC bun packages/scripts/src/testing/run.ts web",
"test:scripts": "TZ=Etc/UTC bun packages/scripts/src/testing/run.ts scripts",
"type-check": "TZ=Etc/UTC bunx tsc --noEmit",
"verify": "TZ=Etc/UTC bun packages/scripts/src/testing/verify.ts",
"build:backend": "TZ=Etc/UTC bun packages/scripts/src/commands/build.backend.ts",
"build:web": "cd packages/web && TZ=Etc/UTC bun --env-file=../backend/.env.local run build.ts"
"test:backend": "bun packages/scripts/src/testing/run.ts backend",
"test:core": "bun packages/scripts/src/testing/run.ts core",
"test:web": "bun test --cwd packages/web",
"test:scripts": "bun packages/scripts/src/testing/run.ts scripts",
"type-check": "bunx tsc --noEmit",
"verify": "bun packages/scripts/src/testing/verify.ts",
"build:backend": "bun packages/scripts/src/commands/build.backend.ts",
"build:web": "cd packages/web && bun --env-file=../backend/.env.local run build.ts"
},
"dependencies": {
"@compass/backend": "*",
Expand Down
40 changes: 40 additions & 0 deletions packages/core/src/__tests__/mock.setup.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,47 @@
import { faker as mockFaker } from "@faker-js/faker";
import { default as mockMergeWith } from "lodash.mergewith";
import { createRequire } from "node:module";

const require = createRequire(import.meta.url);
const bunTest = (() => {
try {
return require("bun:test") as {
mock: {
module: (id: string, factory: () => object) => void;
};
};
} catch {
return null;
}
})();

export const mockBSON = () => {
if (bunTest) {
bunTest.mock.module("bson", () => ({
ObjectId: class ObjectId {
#value: string;

constructor(value?: string) {
if (value && !ObjectId.isValid(value)) {
throw new Error("Invalid ObjectId");
}

this.#value = value ?? mockFaker.database.mongodbObjectId();
}

toString() {
return this.#value;
}

static isValid(value?: string) {
return /^[a-fA-F0-9]{24}$/.test(value ?? "");
}
},
}));

return;
}

jest.mock("bson", () => ({
ObjectId: class ObjectId {
#value: string;
Expand Down
5 changes: 3 additions & 2 deletions packages/core/src/util/color.utils.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import tinycolor from "tinycolor2";
import { describe, expect, it, spyOn } from "bun:test";
import {
brighten,
darken,
Expand Down Expand Up @@ -63,7 +64,7 @@ describe("color.utils", () => {

it("generates color values from random color when not provided", () => {
const color = tinycolor.random();
const randomColorSpy = jest.spyOn(tinycolor, "random");
const randomColorSpy = spyOn(tinycolor, "random");

randomColorSpy.mockReturnValue(color);

Expand Down Expand Up @@ -91,7 +92,7 @@ describe("color.utils", () => {

it("ensures returned colors remain readable for random color", () => {
const randomColor = tinycolor.random();
const randomColorSpy = jest.spyOn(tinycolor, "random");
const randomColorSpy = spyOn(tinycolor, "random");

randomColorSpy.mockReturnValue(randomColor);

Expand Down
Loading