mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-10-01 15:02:31 +00:00
Wait for active CouchDB replication in feature-change E2E
This commit is contained in:
@@ -33,6 +33,9 @@ type FeatureState = {
|
|||||||
version: number | null;
|
version: number | null;
|
||||||
features: string[];
|
features: string[];
|
||||||
hasActiveReplicator: boolean;
|
hasActiveReplicator: boolean;
|
||||||
|
syncStatus: string | null;
|
||||||
|
continuousTaskActive: boolean;
|
||||||
|
liveSync: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
async function readFeatureState(cliBinary: string, env: NodeJS.ProcessEnv): Promise<FeatureState> {
|
async function readFeatureState(cliBinary: string, env: NodeJS.ProcessEnv): Promise<FeatureState> {
|
||||||
@@ -43,10 +46,14 @@ async function readFeatureState(cliBinary: string, env: NodeJS.ProcessEnv): Prom
|
|||||||
"const core=app.plugins.plugins['obsidian-livesync'].core;",
|
"const core=app.plugins.plugins['obsidian-livesync'].core;",
|
||||||
`const id=${JSON.stringify(VERSIONING_DOCID)};`,
|
`const id=${JSON.stringify(VERSIONING_DOCID)};`,
|
||||||
"const info=await core.localDatabase.getRaw(id).catch(()=>null);",
|
"const info=await core.localDatabase.getRaw(id).catch(()=>null);",
|
||||||
|
"const replicator=core.services.replicator.getActiveReplicator();",
|
||||||
"return JSON.stringify({",
|
"return JSON.stringify({",
|
||||||
"version:typeof info?.version==='number'?info.version:null,",
|
"version:typeof info?.version==='number'?info.version:null,",
|
||||||
"features:Array.isArray(info?.used_features)?info.used_features:[],",
|
"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(""),
|
].join(""),
|
||||||
@@ -135,7 +142,12 @@ async function main(): Promise<void> {
|
|||||||
);
|
);
|
||||||
if (start.status !== "completed")
|
if (start.status !== "completed")
|
||||||
throw new Error(`Continuous replication did not start: ${JSON.stringify(start)}`);
|
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, {
|
await putCouchDbDocument(couchDb, dbName, {
|
||||||
...initialVersion,
|
...initialVersion,
|
||||||
|
|||||||
Reference in New Issue
Block a user