From 795f5ff31794e785400a123ba89d0191e2d3ec0b Mon Sep 17 00:00:00 2001 From: Marcus Pousette Date: Tue, 14 Jul 2026 09:11:19 +0200 Subject: [PATCH 1/2] test(wa-sqlite): cover shared-worker OPFS lifecycle --- packages/treecrdt-wa-sqlite/e2e/src/lifecycle.ts | 2 +- packages/treecrdt-wa-sqlite/e2e/tests/lifecycle.spec.ts | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/treecrdt-wa-sqlite/e2e/src/lifecycle.ts b/packages/treecrdt-wa-sqlite/e2e/src/lifecycle.ts index 7d0d4dee..6a33fd09 100644 --- a/packages/treecrdt-wa-sqlite/e2e/src/lifecycle.ts +++ b/packages/treecrdt-wa-sqlite/e2e/src/lifecycle.ts @@ -2,7 +2,7 @@ import { createTreecrdtClient, detectOpfsSupport, type TreecrdtClient } from '@t import { nodeIdFromInt } from '@treecrdt/benchmark'; import { replicaFromLabel } from './op-helpers.js'; -export type LifecycleRuntime = 'direct' | 'dedicated-worker'; +export type LifecycleRuntime = 'direct' | 'dedicated-worker' | 'shared-worker'; const rootId = '0'.repeat(32); const parentId = nodeIdFromInt(901); diff --git a/packages/treecrdt-wa-sqlite/e2e/tests/lifecycle.spec.ts b/packages/treecrdt-wa-sqlite/e2e/tests/lifecycle.spec.ts index 52cd9fc7..e8281e06 100644 --- a/packages/treecrdt-wa-sqlite/e2e/tests/lifecycle.spec.ts +++ b/packages/treecrdt-wa-sqlite/e2e/tests/lifecycle.spec.ts @@ -1,7 +1,7 @@ import { test, expect, type Page } from '@playwright/test'; type LifecycleHarness = NonNullable; -type LifecycleRuntime = 'direct' | 'dedicated-worker'; +type LifecycleRuntime = 'direct' | 'dedicated-worker' | 'shared-worker'; const scenarios: Array<{ runtime: LifecycleRuntime; @@ -9,6 +9,7 @@ const scenarios: Array<{ }> = [ { runtime: 'direct', expectedMode: 'direct' }, { runtime: 'dedicated-worker', expectedMode: 'worker' }, + { runtime: 'shared-worker', expectedMode: 'worker' }, ]; const reloadCases: Array<{ @@ -120,7 +121,11 @@ test.describe('browser OPFS lifecycle', () => { if (!opfsSupport.available) test.skip(true, `OPFS unavailable: ${opfsSupport.reason}`); try { - await drop(page, opts); + // Start the shared-worker lifecycle without a pre-existing worker port. + await drop(page, { + ...opts, + runtime: scenario.runtime === 'shared-worker' ? 'direct' : scenario.runtime, + }); const initialState = await write(page, { ...opts, closeBeforeReload: reloadCase.closeBeforeReload, From 360b4d78ebe37c78748fc72e5c2c8dd2a29004ae Mon Sep 17 00:00:00 2001 From: Marcus Pousette Date: Tue, 14 Jul 2026 10:03:51 +0200 Subject: [PATCH 2/2] test(wa-sqlite): start lifecycle from unique store --- packages/treecrdt-wa-sqlite/e2e/tests/lifecycle.spec.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/treecrdt-wa-sqlite/e2e/tests/lifecycle.spec.ts b/packages/treecrdt-wa-sqlite/e2e/tests/lifecycle.spec.ts index e8281e06..ea79f1f3 100644 --- a/packages/treecrdt-wa-sqlite/e2e/tests/lifecycle.spec.ts +++ b/packages/treecrdt-wa-sqlite/e2e/tests/lifecycle.spec.ts @@ -121,11 +121,6 @@ test.describe('browser OPFS lifecycle', () => { if (!opfsSupport.available) test.skip(true, `OPFS unavailable: ${opfsSupport.reason}`); try { - // Start the shared-worker lifecycle without a pre-existing worker port. - await drop(page, { - ...opts, - runtime: scenario.runtime === 'shared-worker' ? 'direct' : scenario.runtime, - }); const initialState = await write(page, { ...opts, closeBeforeReload: reloadCase.closeBeforeReload,