
> bitvid@1.0.0 test:unit
> node scripts/run-unit-tests.mjs


→ Running tests/app-batch-fetch-profiles.test.mjs
TAP version 13
# Subtest: batchFetchProfiles handles fast and failing relays
ok 1 - batchFetchProfiles handles fast and failing relays
  ---
  duration_ms: 4.105733
  type: 'test'
  ...
# Subtest: batchFetchProfiles respects forceRefresh
ok 2 - batchFetchProfiles respects forceRefresh
  ---
  duration_ms: 0.874928
  type: 'test'
  ...
1..2
# tests 2
# suites 0
# pass 2
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 17.286759

→ Running tests/app-state.test.mjs
TAP version 13
# Subtest: AppState
    # Subtest: Initial state is clean
    ok 1 - Initial state is clean
      ---
      duration_ms: 2.328402
      type: 'test'
      ...
    # Subtest: setPubkey() updates state and notifies subscribers
    ok 2 - setPubkey() updates state and notifies subscribers
      ---
      duration_ms: 0.899231
      type: 'test'
      ...
    # Subtest: setCurrentUserNpub() updates state
    ok 3 - setCurrentUserNpub() updates state
      ---
      duration_ms: 0.480272
      type: 'test'
      ...
    # Subtest: setCurrentVideo() updates state
    ok 4 - setCurrentVideo() updates state
      ---
      duration_ms: 0.58355
      type: 'test'
      ...
    # Subtest: setVideosMap() updates state
    ok 5 - setVideosMap() updates state
      ---
      duration_ms: 0.531757
      type: 'test'
      ...
    # Subtest: setVideoSubscription() updates state
    ok 6 - setVideoSubscription() updates state
      ---
      duration_ms: 0.394451
      type: 'test'
      ...
    # Subtest: setModalState() updates state and notifies modal subscribers
    ok 7 - setModalState() updates state and notifies modal subscribers
      ---
      duration_ms: 0.794343
      type: 'test'
      ...
    # Subtest: Global subscriber receives updates
    ok 8 - Global subscriber receives updates
      ---
      duration_ms: 0.556557
      type: 'test'
      ...
    # Subtest: resetAppState() clears all state and notifies
    ok 9 - resetAppState() clears all state and notifies
      ---
      duration_ms: 0.692509
      type: 'test'
      ...
    1..9
ok 1 - AppState
  ---
  duration_ms: 9.317401
  type: 'suite'
  ...
1..1
# tests 9
# suites 1
# pass 9
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 26.818692

→ Running tests/app/channel-profile-moderation.test.mjs
node:internal/modules/package_json_reader:314
  throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null);
        ^

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'jsdom' imported from /app/tests/app/channel-profile-moderation.test.mjs
    at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9)
    at packageResolve (node:internal/modules/esm/resolve:767:81)
    at moduleResolve (node:internal/modules/esm/resolve:853:18)
    at defaultResolve (node:internal/modules/esm/resolve:983:11)
    at #cachedDefaultResolve (node:internal/modules/esm/loader:731:20)
    at ModuleLoader.resolve (node:internal/modules/esm/loader:708:38)
    at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:310:38)
    at ModuleJob._link (node:internal/modules/esm/module_job:182:49) {
  code: 'ERR_MODULE_NOT_FOUND'
}

Node.js v22.22.0

✖ tests/app/channel-profile-moderation.test.mjs failed with exit code 1
