ulysses/static
BarsatZulkarnine 00f16d66a3
Fix test suite: ESM module loading and stub isolation (#844)
* Fix test suite: ESM loading and stub isolation (refs #605)

Three targeted fixes to reduce suite failures from 9 → 1:

1. package.json: add "type": "module" so Node loads static/js/**
   as ES modules. Fixes 7 tests in test_compare_js.py and
   test_reply_recipients_js.py that fail with
   "SyntaxError: Unexpected token 'export'".

2. test_null_owner_gates.py: add Base and ChatMessage to the
   core.database stub. Without Base the scheduler test cannot
   import at collection time; without ChatMessage core/__init__.py
   fails mid-load when session_manager.py tries to import it,
   leaving core partially initialised in sys.modules and poisoning
   the auth manager migration test that runs later in the same file.

3. test_task_scheduler_session_delivery.py: skip gracefully when
   core.database is stubbed (Base is a MagicMock) rather than
   crashing. The test passes correctly when run in isolation.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Scope ESM declaration to static/js/ and document isolation workaround

Per review feedback on #844:

1. Move "type": "module" from root package.json to static/js/package.json.
   The root package.json had no type field (defaulted to CJS) and should
   stay that way — vendored UMD bundles in static/lib/ use require() internally
   and would break if Node ever tried to load them as ES modules. Node resolves
   the nearest package.json, so adding it in static/js/ scopes the ESM
   declaration to just the files the JS unit tests actually load
   (compare/state.js, emailLibrary/replyRecipients.js).

2. Expand the module-level skip comment in test_task_scheduler_session_delivery
   to document that it is a temporary isolation workaround, explain root cause
   (test_null_owner_gates installs a module-level sys.modules stub with no
   cleanup), record before/after suite numbers, and note the clean path
   (refactor to fixture-scoped stub).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 11:29:29 +09:00
..
fonts Odysseus v1.0 2026-05-31 23:58:26 +09:00
js Fix test suite: ESM module loading and stub isolation (#844) 2026-06-02 11:29:29 +09:00
lib Odysseus v1.0 2026-05-31 23:58:26 +09:00
app.js Fix drag-and-drop files landing behind the panes in Compare (#818) 2026-06-02 11:14:59 +09:00
index.html Merge branch 'pr-673' into visual-pr-playground 2026-06-02 06:26:32 +09:00
landing.html feat: Add mobile hamburger navigation menu and toggle functionality 2026-06-01 15:57:01 +04:00
login.html Improve accessibility across core flows (#86) 2026-06-01 22:04:00 +02:00
manifest.json Odysseus v1.0 2026-05-31 23:58:26 +09:00
style.css Polish task UI slash commands and Ollama serving 2026-06-02 09:36:03 +09:00
sw.js Odysseus v1.0 2026-05-31 23:58:26 +09:00