Purpose
Create reusable test fixtures and mock opencode plugin context for all E2E tests.
Technical Details
mock-plugin-context.ts: Minimal ctx implementation matching @opencode-ai/plugin types
ctx.client.session.summarize() — mockable, tracks calls
ctx.client.session.id — returns test session ID
- No real filesystem/network access
sample-layers.ts: Pre-configured layer instances for testing
- MockLayer (configurable content, order, enabled)
- FailingLayer (throws on generate)
sample-messages.ts: Message history fixtures
- Assistant message with compaction_signal block
- User message with providerID/modelID in info
- Empty assistant message (for placeholder injection test)
sample-signals.ts: Compaction signal fixtures
- compact_now, compact_soon, no_compact variants
Files to Create
test/fixtures/mock-plugin-context.ts
test/fixtures/sample-layers.ts
test/fixtures/sample-messages.ts
test/fixtures/sample-signals.ts
Acceptance Criteria
Purpose
Create reusable test fixtures and mock opencode plugin context for all E2E tests.
Technical Details
mock-plugin-context.ts: Minimalctximplementation matching@opencode-ai/plugintypesctx.client.session.summarize()— mockable, tracks callsctx.client.session.id— returns test session IDsample-layers.ts: Pre-configured layer instances for testingsample-messages.ts: Message history fixturessample-signals.ts: Compaction signal fixturesFiles to Create
test/fixtures/mock-plugin-context.tstest/fixtures/sample-layers.tstest/fixtures/sample-messages.tstest/fixtures/sample-signals.tsAcceptance Criteria