From 5d7d3db63c42af432693ab158a03393cf7d85bb9 Mon Sep 17 00:00:00 2001 From: vorotamoroz Date: Tue, 29 Sep 2026 07:03:46 +0000 Subject: [PATCH] Wait for active CouchDB replication in feature-change E2E --- .../scripts/remote-feature-change.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/test/e2e-obsidian/scripts/remote-feature-change.ts b/test/e2e-obsidian/scripts/remote-feature-change.ts index 8e9b66b3..7653aead 100644 --- a/test/e2e-obsidian/scripts/remote-feature-change.ts +++ b/test/e2e-obsidian/scripts/remote-feature-change.ts @@ -33,6 +33,9 @@ type FeatureState = { version: number | null; features: string[]; hasActiveReplicator: boolean; + syncStatus: string | null; + continuousTaskActive: boolean; + liveSync: boolean; }; async function readFeatureState(cliBinary: string, env: NodeJS.ProcessEnv): Promise { @@ -43,10 +46,14 @@ async function readFeatureState(cliBinary: string, env: NodeJS.ProcessEnv): Prom "const core=app.plugins.plugins['obsidian-livesync'].core;", `const id=${JSON.stringify(VERSIONING_DOCID)};`, "const info=await core.localDatabase.getRaw(id).catch(()=>null);", + "const replicator=core.services.replicator.getActiveReplicator();", "return JSON.stringify({", "version:typeof info?.version==='number'?info.version:null,", "features:Array.isArray(info?.used_features)?info.used_features:[],", - "hasActiveReplicator:!!core.services.replicator.getActiveReplicator(),", + "hasActiveReplicator:!!replicator,", + "syncStatus:replicator?.syncStatus??null,", + "continuousTaskActive:!!replicator?.continuousTask,", + "liveSync:core.settings.liveSync,", "});", "})()", ].join(""), @@ -135,7 +142,12 @@ async function main(): Promise { ); if (start.status !== "completed") throw new Error(`Continuous replication did not start: ${JSON.stringify(start)}`); - await waitForState(cli.binary, session.cliEnv, (state) => state.hasActiveReplicator, "an active Replicator"); + await waitForState( + cli.binary, + session.cliEnv, + (state) => state.hasActiveReplicator && state.continuousTaskActive && state.syncStatus === "PAUSED", + "a caught-up continuous Replicator" + ); await putCouchDbDocument(couchDb, dbName, { ...initialVersion,