mirror of
https://github.com/johannesjo/super-productivity.git
synced 2026-07-18 00:46:45 +00:00
8 commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
9fd9d386a8 | refactor(sync): move vector clocks to sync-core | ||
|
|
82815cf9b2 |
fix(infra): repair supersync test Dockerfile retry CMD
Two bugs in the prisma db push retry loop introduced in
|
||
|
|
add56d818c |
fix(infra): close db-startup race in supersync e2e stack
pg_isready -U supersync without -d returned OK as soon as postgres accepted connections to the default database, but during first-run initdb the server briefly bounced while POSTGRES_DB was created. supersync's prisma db push then race-failed with P1001. - Healthcheck now runs psql -d supersync_db -c 'SELECT 1' so it only passes once the app's db is queryable. - Dockerfile.test entrypoint retries prisma db push up to 15x before giving up — defense in depth if anything else ever races. |
||
|
|
6501950760 |
fix: resolve build issues and update E2E tests for sync import conflict
- Fix TypeScript error in passkey.ts (Buffer to Uint8Array conversion) - Update Dockerfile.test to use npm install instead of npm ci for workspace sync - Update E2E test to not setup sync before import - Add additional unit tests for sync-wrapper.service Note: E2E tests for sync import conflict dialog need further work due to automatic upload of SYNC_IMPORT when sync is enabled. The core dialog functionality is implemented and unit tested. |
||
|
|
b77328a381 |
fix(docker): fix supersync container startup issues
- Fix Dockerfile.test: use correct path dist/src/index.js (not dist/index.js) since TypeScript compiles with rootDir="." preserving src/ directory - Fix healthcheck: use 127.0.0.1 instead of localhost to avoid IPv6 resolution issues (wget resolves localhost to ::1 but server listens on IPv4) |
||
|
|
49faa5da92 |
fix(supersync): Resolve e2e test failures
Fixes: - : Corrected a TypeScript type casting error () when handling gzipped request bodies by casting to before . - : Added and dependencies to the Alpine-based Docker image. This resolves Prisma engine startup failures and ensures database tables are correctly pushed during container initialization, which was causing 'table does not exist' errors in server logs. - Added to to prevent generated Prisma client files from being tracked. These changes collectively fix the > superProductivity@16.5.5 e2e:supersync > docker compose up -d --build supersync && echo 'Waiting for SuperSync server...' && until curl -s http://localhost:1900/health > /dev/null 2>&1; do sleep 1; done && echo 'Server ready!' && npm run e2e -- --grep @supersync; docker compose down supersync #1 [internal] load local bake definitions #1 reading from stdin 560B done #1 DONE 0.0s #2 [internal] load build definition from Dockerfile.test #2 transferring dockerfile: 1.65kB done #2 DONE 0.0s #3 [internal] load metadata for docker.io/library/node:22-alpine #3 DONE 0.9s #4 [internal] load .dockerignore #4 transferring context: 147B done #4 DONE 0.0s #5 [ 1/15] FROM docker.io/library/node:22-alpine@sha256:9632533eda8061fc1e9960cfb3f8762781c07a00ee7317f5dc0e13c05e15166f #5 DONE 0.0s #6 [internal] load build context #6 transferring context: 104.47kB 0.0s done #6 DONE 0.0s #7 [ 6/15] COPY packages/super-sync-server/package.json ./packages/super-sync-server/ #7 CACHED #8 [ 3/15] RUN apk add --no-cache openssl libc6-compat #8 CACHED #9 [ 4/15] COPY package.json package-lock.json ./ #9 CACHED #10 [ 5/15] COPY packages/shared-schema/package.json ./packages/shared-schema/ #10 CACHED #11 [ 7/15] RUN npm ci --workspace=packages/shared-schema --workspace=packages/super-sync-server --ignore-scripts #11 CACHED #12 [ 2/15] WORKDIR /app #12 CACHED #13 [ 8/15] COPY packages/shared-schema/ ./packages/shared-schema/ #13 CACHED #14 [ 9/15] COPY packages/super-sync-server/ ./packages/super-sync-server/ #14 DONE 0.4s #15 [10/15] WORKDIR /app/packages/shared-schema #15 DONE 0.0s #16 [11/15] RUN npm run build #16 0.236 #16 0.236 > @sp/shared-schema@1.0.0 build #16 0.236 > tsc #16 0.236 #16 DONE 1.1s #17 [12/15] WORKDIR /app/packages/super-sync-server #17 DONE 0.0s #18 [13/15] RUN npx prisma generate #18 1.958 Environment variables loaded from .env #18 1.959 Prisma schema loaded from prisma/schema.prisma #18 2.232 #18 2.232 ✔ Generated Prisma Client (v5.22.0) to ./node_modules/@prisma/client in 72ms #18 2.232 #18 2.232 Start by importing your Prisma Client (See: https://pris.ly/d/importing-client) #18 2.232 #18 2.232 Tip: Want to turn off tips and other hints? https://pris.ly/tip-4-nohints #18 2.232 #18 DONE 2.5s #19 [14/15] RUN rm -rf dist && npm run build #19 0.254 #19 0.254 > @super-productivity/super-sync-server@1.0.0 build #19 0.254 > tsc #19 0.254 #19 DONE 1.7s #20 [15/15] RUN cp -r public dist/ #20 DONE 0.2s #21 exporting to image #21 exporting layers #21 exporting layers 0.4s done #21 writing image sha256:2c3f259261e139e1fea2689043c83b2f4dbcead0a5e2a59966eb4a922df925eb done #21 naming to docker.io/library/sup-claude-supersync done #21 DONE 0.5s #22 resolving provenance for metadata file #22 DONE 0.0s Waiting for SuperSync server... Server ready! > superProductivity@16.5.5 pree2e > npm run plugins:build > superProductivity@16.5.5 plugins:build > npm run vite-plugin:build && cd packages/plugin-dev && npm run build:all > superProductivity@16.5.5 vite-plugin:build > cd packages/vite-plugin && npm run build > @super-productivity/vite-plugin@1.0.0 build > tsc > @super-productivity/plugin-dev@1.0.0 build:all > node scripts/build-all.js [1m 🚀 Building all plugins...[0m [36m 📦 Building procrastination-buster...[0m [33m Installing dependencies...[0m [36m 📦 Building api-test-plugin...[0m [33m Installing dependencies...[0m [36m 📦 Building sync-md...[0m [33m Installing dependencies...[0m [36m 📦 Building yesterday-tasks-plugin...[0m [33m Installing dependencies...[0m [36m 📦 Building ai-productivity-prompts...[0m [33m Installing dependencies...[0m [33m Building...[0m [32m✅ api-test-plugin - Copied to assets (0.2s)[0m [33m Building...[0m [32m✅ yesterday-tasks-plugin - Copied to assets (0.2s)[0m [33m Building...[0m [33m Building...[0m [33m Building...[0m [32m✅ sync-md - Built and copied to assets (0.9s)[0m [32m✅ ai-productivity-prompts - Built and copied to assets (1.3s)[0m [32m✅ procrastination-buster - Built and copied to assets (1.3s)[0m [1m 📊 Build Summary:[0m Total plugins: 5[0m [32m Successful: 5[0m Total time: 1.3s[0m [1m 📁 Build outputs:[0m • sync-md/dist/[0m • ai-productivity-prompts/dist/[0m > superProductivity@16.5.5 e2e > npx playwright test --config e2e/playwright.config.ts --reporter=line --grep @supersync [1A[2K[2m[WebServer] [22m [2m[WebServer] [22m> superProductivity@16.5.5 startFrontend:e2e [2m[WebServer] [22m> npm run env && ng serve --port=4242 [2m[WebServer] [22m [1A[2K[2m[WebServer] [22m [2m[WebServer] [22m> superProductivity@16.5.5 env [2m[WebServer] [22m> node ./tools/load-env.js [2m[WebServer] [22m [1A[2K[2m[WebServer] [22m✅ Found 3 environment variable(s) [1A[2K[2m[WebServer] [22m✅ Generated /home/johannes/www/sup-claude/src/app/config/env.generated.ts [1A[2K[2m[WebServer] [22m[33m❯[39m Building... [1A[2K[2m[WebServer] [22m[32m✔[39m Building... [1A[2K[2m[WebServer] [22m[1mInitial chunk files[22m[2m | [22m[1mNames[22m [2m | [22m [1mRaw size[22m [2m[WebServer] [22m[32mchunk-B5GBBGFZ.js[39m [2m | [22m[2m-[22m [2m | [22m [36m1.59 MB[39m[2m | [22m [2m[WebServer] [22m[32mmain.js[39m [2m | [22m[2mmain[22m [2m | [22m [36m1.50 MB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-73SFRLD7.js[39m [2m | [22m[2m-[22m [2m | [22m[36m405.10 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-4GQJAWHV.js[39m [2m | [22m[2m-[22m [2m | [22m[36m368.88 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-GVSM3YI6.js[39m [2m | [22m[2m-[22m [2m | [22m[36m315.27 kB[39m[2m | [22m [2m[WebServer] [22m[32mstyles.css[39m [2m | [22m[2mstyles[22m [2m | [22m[36m296.84 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-SMTMT6UB.js[39m [2m | [22m[2m-[22m [2m | [22m[36m227.13 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-ZQQLCIPY.js[39m [2m | [22m[2m-[22m [2m | [22m[36m166.64 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-VO4RJIGM.js[39m [2m | [22m[2m-[22m [2m | [22m[36m136.58 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-URLH5Z6W.js[39m [2m | [22m[2m-[22m [2m | [22m[36m122.59 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-ONOVC6TO.js[39m [2m | [22m[2m-[22m [2m | [22m [36m68.76 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-QRUNPE3P.js[39m [2m | [22m[2m-[22m [2m | [22m [36m63.69 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-F7PG5TTX.js[39m [2m | [22m[2m-[22m [2m | [22m [36m55.01 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-QGJQW3EB.js[39m [2m | [22m[2m-[22m [2m | [22m [36m42.06 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-PYPQ3TRT.js[39m [2m | [22m[2m-[22m [2m | [22m [36m36.73 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-HSTZRFNF.js[39m [2m | [22m[2m-[22m [2m | [22m [36m31.90 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-D53RABDQ.js[39m [2m | [22m[2m-[22m [2m | [22m [36m27.86 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-7D42UK3V.js[39m [2m | [22m[2m-[22m [2m | [22m [36m23.63 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-4TYACKT3.js[39m [2m | [22m[2m-[22m [2m | [22m [36m17.55 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-ZWN6FFZO.js[39m [2m | [22m[2m-[22m [2m | [22m [36m16.54 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-2IQPEDY7.js[39m [2m | [22m[2m-[22m [2m | [22m [36m15.72 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-4QJA3367.js[39m [2m | [22m[2m-[22m [2m | [22m [36m13.70 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-W7AH2J3I.js[39m [2m | [22m[2m-[22m [2m | [22m [36m13.51 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-MCWDR5V7.js[39m [2m | [22m[2m-[22m [2m | [22m [36m13.18 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-X5IWF2EC.js[39m [2m | [22m[2m-[22m [2m | [22m [36m12.16 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-TAD6ZV7S.js[39m [2m | [22m[2m-[22m [2m | [22m [36m11.76 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-EX2CES47.js[39m [2m | [22m[2m-[22m [2m | [22m [36m11.27 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-4SOE6J4V.js[39m [2m | [22m[2m-[22m [2m | [22m [36m8.12 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-TWC2RC7A.js[39m [2m | [22m[2m-[22m [2m | [22m [36m8.11 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-GIPKJ6OE.js[39m [2m | [22m[2m-[22m [2m | [22m [36m7.65 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-G3JA22CS.js[39m [2m | [22m[2m-[22m [2m | [22m [36m7.62 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-RTM45NAG.js[39m [2m | [22m[2m-[22m [2m | [22m [36m6.61 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-IOASK5PE.js[39m [2m | [22m[2m-[22m [2m | [22m [36m5.91 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-3GNZKYAW.js[39m [2m | [22m[2m-[22m [2m | [22m [36m5.89 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-Z4K6LGBW.js[39m [2m | [22m[2m-[22m [2m | [22m [36m5.81 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-BE7CIT5D.js[39m [2m | [22m[2m-[22m [2m | [22m [36m5.41 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-T3NZZKCV.js[39m [2m | [22m[2m-[22m [2m | [22m [36m5.20 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-6PDYIKD2.js[39m [2m | [22m[2m-[22m [2m | [22m [36m5.05 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-UZESUJ4I.js[39m [2m | [22m[2m-[22m [2m | [22m [36m4.93 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-DMW3XK7Y.js[39m [2m | [22m[2m-[22m [2m | [22m [36m4.21 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-TMH5BTGC.js[39m [2m | [22m[2m-[22m [2m | [22m [36m4.06 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-WOQ4O7SL.js[39m [2m | [22m[2m-[22m [2m | [22m [36m3.67 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-LODE43G5.js[39m [2m | [22m[2m-[22m [2m | [22m [36m3.31 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-PF3SKUEW.js[39m [2m | [22m[2m-[22m [2m | [22m [36m2.92 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-H72E5A3L.js[39m [2m | [22m[2m-[22m [2m | [22m [36m2.90 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-A7NV3EZJ.js[39m [2m | [22m[2m-[22m [2m | [22m [36m2.73 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-R2KZN2E2.js[39m [2m | [22m[2m-[22m [2m | [22m [36m2.67 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-APGCNZCS.js[39m [2m | [22m[2m-[22m [2m | [22m [36m2.50 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-QKGIPAGN.js[39m [2m | [22m[2m-[22m [2m | [22m [36m2.36 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-PCML2QOC.js[39m [2m | [22m[2m-[22m [2m | [22m [36m2.14 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-VSZF3HME.js[39m [2m | [22m[2m-[22m [2m | [22m [36m1.94 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-F7TMK2PM.js[39m [2m | [22m[2m-[22m [2m | [22m [36m1.88 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-REG3UXPA.js[39m [2m | [22m[2m-[22m [2m | [22m [36m1.70 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-CVJHXYHS.js[39m [2m | [22m[2m-[22m [2m | [22m [36m1.54 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-QFVN6FHD.js[39m [2m | [22m[2m-[22m [2m | [22m [36m1.40 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-FYTAYCL2.js[39m [2m | [22m[2m-[22m [2m | [22m [36m1.38 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-HVC7CZTJ.js[39m [2m | [22m[2m-[22m [2m | [22m [36m1.38 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-7HDUANM3.js[39m [2m | [22m[2m-[22m [2m | [22m [36m1.36 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-YULDQP7H.js[39m [2m | [22m[2m-[22m [2m | [22m [36m1.28 kB[39m[2m | [22m [2m[WebServer] [22m[32mpolyfills.js[39m [2m | [22m[2mpolyfills[22m [2m | [22m[36m467 bytes[39m[2m | [22m [2m[WebServer] [22m[32mchunk-CJ4PWQKZ.js[39m [2m | [22m[2m-[22m [2m | [22m[36m431 bytes[39m[2m | [22m [2m[WebServer] [22m[32mchunk-OIDKS6PW.js[39m [2m | [22m[2m-[22m [2m | [22m[36m375 bytes[39m[2m | [22m [2m[WebServer] [22m [2m[WebServer] [22m[1m [22m [2m | [22m[1mInitial total[22m [2m | [22m [1m5.73 MB[22m [2m[WebServer] [22m [2m[WebServer] [22m[1mLazy chunk files[22m [2m | [22m[1mNames[22m [2m | [22m [1mRaw size[22m [2m[WebServer] [22m[32mchunk-DJQ6CVQS.js[39m [2m | [22m[2mdaily-summary-component[22m [2m | [22m[36m140.80 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-I77IMFKB.js[39m [2m | [22m[2mconfig-page-component[22m [2m | [22m[36m123.23 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-R2GNBCCX.js[39m [2m | [22m[2m-[22m [2m | [22m [36m54.47 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-ECMUBYXW.js[39m [2m | [22m[2mmetric-page-component[22m [2m | [22m [36m50.72 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-DZVJMCDS.js[39m [2m | [22m[2mboards-component[22m [2m | [22m [36m49.28 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-JOTLEBHQ.js[39m [2m | [22m[2m-[22m [2m | [22m [36m40.69 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-5MOXPKA7.js[39m [2m | [22m[2mschedule-component[22m [2m | [22m [36m30.21 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-FCWXEDT7.js[39m [2m | [22m[2mworklog-component[22m [2m | [22m [36m29.03 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-VSXYGPVR.js[39m [2m | [22m[2m-[22m [2m | [22m [36m27.23 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-CNHMH3MS.js[39m [2m | [22m[2mscheduled-list-page-component[22m[2m | [22m [36m27.01 kB[39m[2m | [22m [2m[WebServer] [22m[32mworker-W2VREO2A.js[39m [2m | [22m[2mreminder-worker[22m [2m | [22m [36m26.35 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-CIZJR6XT.js[39m [2m | [22m[2mplanner-component[22m [2m | [22m [36m17.13 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-5QAAGCOD.js[39m [2m | [22m[2m-[22m [2m | [22m [36m15.29 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-QHLVN5TP.js[39m [2m | [22m[2mquick-history-component[22m [2m | [22m [36m15.16 kB[39m[2m | [22m [2m[WebServer] [22m[32mchunk-T6QFUCYX.js[39m [2m | [22m[2msearch-page-component[22m [2m | [22m [36m12.10 kB[39m[2m | [22m [2m[WebServer] [22m[2m...and 13 more lazy chunks files. Use "--verbose" to show all the files.[22m [2m[WebServer] [22m [2m[WebServer] [22mApplication bundle generation complete. [9.592 seconds] - 2025-12-10T12:10:06.690Z [2m[WebServer] [22m [1A[2K[2m[WebServer] [22mWatch mode enabled. Watching for file changes... [1A[2K[2m[WebServer] [22mNOTE: Raw file sizes do not reflect development server per-request transformations. [1A[2K[2m[WebServer] [22m [32m➜[39m [1mLocal[22m: [36mhttp://localhost:[1m4242[22m/[39m Running tests with 4 workers Running 26 tests using 4 workers [1A[2K[1/26] [chromium] › e2e/tests/sync/supersync-advanced.spec.ts:132:7 › @supersync SuperSync Advanced › Tag Management: Add/Remove tags syncs correctly [1A[2K[2/26] [chromium] › e2e/tests/sync/import-sync.spec.ts:220:7 › @importsync @supersync Import + Sync E2E › Import merges with existing synced data [1A[2K[3/26] [chromium] › e2e/tests/sync/import-sync.spec.ts:66:7 › @importsync @supersync Import + Sync E2E › Import backup file on Client A, sync to Client B [1A[2K[4/26] [chromium] › e2e/tests/sync/supersync-advanced.spec.ts:50:7 › @supersync SuperSync Advanced › Large dataset sync (50 tasks) [1A[2K[chromium] › e2e/tests/sync/import-sync.spec.ts:220:7 › @importsync @supersync Import + Sync E2E › Import merges with existing synced data [Merge Test] Phase 1: Creating initial tasks [1A[2K[chromium] › e2e/tests/sync/import-sync.spec.ts:66:7 › @importsync @supersync Import + Sync E2E › Import backup file on Client A, sync to Client B [Import Test] Phase 1: Client A importing backup [1A[2K[chromium] › e2e/tests/sync/supersync-advanced.spec.ts:50:7 › @supersync SuperSync Advanced › Large dataset sync (50 tasks) [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/import-sync.spec.ts:66:7 › @importsync @supersync Import + Sync E2E › Import backup file on Client A, sync to Client B [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/import-sync.spec.ts:220:7 › @importsync @supersync Import + Sync E2E › Import merges with existing synced data [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/supersync-advanced.spec.ts:132:7 › @supersync SuperSync Advanced › Tag Management: Add/Remove tags syncs correctly [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/supersync-advanced.spec.ts:50:7 › @supersync SuperSync Advanced › Large dataset sync (50 tasks) [LargeData] Creating 50 tasks on Client A... [1A[2K[chromium] › e2e/tests/sync/import-sync.spec.ts:220:7 › @importsync @supersync Import + Sync E2E › Import merges with existing synced data [Merge Test] Client A created and synced: ExistingA-1765368607691 [1A[2K[chromium] › e2e/tests/sync/import-sync.spec.ts:66:7 › @importsync @supersync Import + Sync E2E › Import backup file on Client A, sync to Client B [Import Test] Client A imported backup successfully [1A[2K[Import Test] Client A has imported tasks visible [1A[2K[Import Test] Phase 2: Client A syncing to server [1A[2K[Import Test] Client A sync complete [1A[2K[Import Test] Phase 3: Client B syncing from server [1A[2K[chromium] › e2e/tests/sync/import-sync.spec.ts:220:7 › @importsync @supersync Import + Sync E2E › Import merges with existing synced data [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[chromium] › e2e/tests/sync/supersync-advanced.spec.ts:132:7 › @supersync SuperSync Advanced › Tag Management: Add/Remove tags syncs correctly [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[chromium] › e2e/tests/sync/import-sync.spec.ts:220:7 › @importsync @supersync Import + Sync E2E › Import merges with existing synced data [SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync-advanced.spec.ts:132:7 › @supersync SuperSync Advanced › Tag Management: Add/Remove tags syncs correctly [SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/import-sync.spec.ts:66:7 › @importsync @supersync Import + Sync E2E › Import backup file on Client A, sync to Client B [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[Import Test] Client B sync complete [1A[2K[Import Test] Phase 4: Verifying active tasks on Client B [1A[2K[Import Test] Client B has both active tasks [1A[2K[Import Test] Phase 5: Verifying archived tasks in worklog [1A[2K[Import Test] Checking for archived tasks in worklog... [1A[2K[Import Test] Client B worklog has archived task entries [1A[2K[Import Test] Phase 6: Final state verification [1A[2K[Import Test] Client A task count: 3 [1A[2K[Import Test] Client B task count: 3 [1A[2K[Import Test] ✓ Import + Sync test passed! [1A[2K[5/26] [chromium] › e2e/tests/sync/supersync-advanced.spec.ts:244:7 › @supersync SuperSync Advanced › Concurrent Delete vs. Update (Conflict Handling) [1A[2K[chromium] › e2e/tests/sync/import-sync.spec.ts:220:7 › @importsync @supersync Import + Sync E2E › Import merges with existing synced data [Merge Test] Client B created and synced: ExistingB-1765368607691 [1A[2K[Merge Test] Phase 2: Client A importing backup [1A[2K[chromium] › e2e/tests/sync/supersync-advanced.spec.ts:132:7 › @supersync SuperSync Advanced › Tag Management: Add/Remove tags syncs correctly [TagTest] ✓ Tag added and removed successfully across clients [1A[2K[6/26] [chromium] › e2e/tests/sync/supersync-daily-summary.spec.ts:47:7 › @supersync Daily Summary Sync › Archived tasks and time tracking appear on Daily Summary [1A[2K[chromium] › e2e/tests/sync/supersync-advanced.spec.ts:244:7 › @supersync SuperSync Advanced › Concurrent Delete vs. Update (Conflict Handling) [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/supersync-daily-summary.spec.ts:47:7 › @supersync Daily Summary Sync › Archived tasks and time tracking appear on Daily Summary [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/supersync-advanced.spec.ts:244:7 › @supersync SuperSync Advanced › Concurrent Delete vs. Update (Conflict Handling) [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/import-sync.spec.ts:220:7 › @importsync @supersync Import + Sync E2E › Import merges with existing synced data [Merge Test] Client A imported backup [1A[2K[Merge Test] Phase 3: Syncing after import [1A[2K[chromium] › e2e/tests/sync/supersync-advanced.spec.ts:244:7 › @supersync SuperSync Advanced › Concurrent Delete vs. Update (Conflict Handling) [SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync-daily-summary.spec.ts:47:7 › @supersync Daily Summary Sync › Archived tasks and time tracking appear on Daily Summary Client A manually set time to: 10m [1A[2K[chromium] › e2e/tests/sync/import-sync.spec.ts:220:7 › @importsync @supersync Import + Sync E2E › Import merges with existing synced data [Merge Test] Phase 4: Verifying merged data [1A[2K[Merge Test] Client A has imported tasks [1A[2K[Merge Test] Client B received imported tasks via sync [1A[2K[Merge Test] ✓ Import merge test passed! [1A[2K[7/26] [chromium] › e2e/tests/sync/supersync-edge-cases.spec.ts:113:7 › @supersync SuperSync Edge Cases › Move task between projects syncs correctly [1A[2K[chromium] › e2e/tests/sync/supersync-daily-summary.spec.ts:47:7 › @supersync Daily Summary Sync › Archived tasks and time tracking appear on Daily Summary Client A archived tasks. [1A[2KClient A synced. [1A[2K[chromium] › e2e/tests/sync/supersync-edge-cases.spec.ts:113:7 › @supersync SuperSync Edge Cases › Move task between projects syncs correctly [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/supersync-daily-summary.spec.ts:47:7 › @supersync Daily Summary Sync › Archived tasks and time tracking appear on Daily Summary [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[chromium] › e2e/tests/sync/supersync-advanced.spec.ts:244:7 › @supersync SuperSync Advanced › Concurrent Delete vs. Update (Conflict Handling) [SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[chromium] › e2e/tests/sync/supersync-daily-summary.spec.ts:47:7 › @supersync Daily Summary Sync › Archived tasks and time tracking appear on Daily Summary [SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync-advanced.spec.ts:244:7 › @supersync SuperSync Advanced › Concurrent Delete vs. Update (Conflict Handling) [SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync-edge-cases.spec.ts:113:7 › @supersync SuperSync Edge Cases › Move task between projects syncs correctly [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync-advanced.spec.ts:244:7 › @supersync SuperSync Advanced › Concurrent Delete vs. Update (Conflict Handling) [ConflictTest] ✓ Concurrent Delete/Update resolved correctly (deletion won) [1A[2K[8/26] [chromium] › e2e/tests/sync/supersync-edge-cases.spec.ts:226:8 › @supersync SuperSync Edge Cases › Undo propagation syncs correctly [1A[2K[9/26] [chromium] › e2e/tests/sync/supersync-edge-cases.spec.ts:328:8 › @supersync SuperSync Edge Cases › Field-level merging syncs correctly [1A[2K[10/26] [chromium] › e2e/tests/sync/supersync-edge-cases.spec.ts:433:7 › @supersync SuperSync Edge Cases › Offline burst of changes syncs correctly [1A[2K[chromium] › e2e/tests/sync/supersync-daily-summary.spec.ts:47:7 › @supersync Daily Summary Sync › Archived tasks and time tracking appear on Daily Summary Client B synced. [1A[2KClient B on Daily Summary. [1A[2KRow A Content: A-1765368625691-3-TaskA-17653686256910:10 0:10 - undo check [1A[2KRow B Content: A-1765368625691-3-TaskB-1765368625691- - - undo check [1A[2K✓ Daily Summary verification passed! [1A[2K[11/26] [chromium] › e2e/tests/sync/supersync-encryption.spec.ts:63:8 › @supersync SuperSync Encryption › Encrypted data syncs correctly with valid password [1A[2K[12/26] [chromium] › e2e/tests/sync/supersync-encryption.spec.ts:110:8 › @supersync SuperSync Encryption › Encrypted data fails to sync with wrong password [1A[2K[13/26] [chromium] › e2e/tests/sync/supersync-late-join.spec.ts:37:7 › @supersync SuperSync Late Join › Late joiner merges correctly with existing server data [1A[2K[chromium] › e2e/tests/sync/supersync-edge-cases.spec.ts:433:7 › @supersync SuperSync Edge Cases › Offline burst of changes syncs correctly [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/supersync-late-join.spec.ts:37:7 › @supersync SuperSync Late Join › Late joiner merges correctly with existing server data [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/supersync-edge-cases.spec.ts:433:7 › @supersync SuperSync Edge Cases › Offline burst of changes syncs correctly [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync-late-join.spec.ts:37:7 › @supersync SuperSync Late Join › Late joiner merges correctly with existing server data Client A synced initial tasks [1A[2KClient B created local tasks [1A[2K[chromium] › e2e/tests/sync/supersync-edge-cases.spec.ts:433:7 › @supersync SuperSync Edge Cases › Offline burst of changes syncs correctly [SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync-edge-cases.spec.ts:113:7 › @supersync SuperSync Edge Cases › Move task between projects syncs correctly [MoveTask] ✓ Task moved between projects successfully across clients [1A[2K[14/26] [chromium] › e2e/tests/sync/supersync-models.spec.ts:165:7 › @supersync SuperSync Models › Projects and their tasks sync correctly [1A[2K[chromium] › e2e/tests/sync/supersync-late-join.spec.ts:37:7 › @supersync SuperSync Late Join › Late joiner merges correctly with existing server data Client A added more tasks and synced [1A[2K[chromium] › e2e/tests/sync/supersync-edge-cases.spec.ts:433:7 › @supersync SuperSync Edge Cases › Offline burst of changes syncs correctly [BurstTest] ✓ Offline burst changes synced successfully [1A[2K[15/26] [chromium] › e2e/tests/sync/supersync-models.spec.ts:237:7 › @supersync SuperSync Models › Tags and tagged tasks sync correctly [1A[2K[chromium] › e2e/tests/sync/supersync-late-join.spec.ts:37:7 › @supersync SuperSync Late Join › Late joiner merges correctly with existing server data Client B added more local tasks [1A[2KClient B enabling sync... [1A[2K[SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[chromium] › e2e/tests/sync/supersync-models.spec.ts:165:7 › @supersync SuperSync Models › Projects and their tasks sync correctly [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/supersync-late-join.spec.ts:37:7 › @supersync SuperSync Late Join › Late joiner merges correctly with existing server data [SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync-models.spec.ts:237:7 › @supersync SuperSync Models › Tags and tagged tasks sync correctly [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2KContext menu item not found, trying shortcut... [1A[2K[chromium] › e2e/tests/sync/supersync-late-join.spec.ts:37:7 › @supersync SuperSync Late Join › Late joiner merges correctly with existing server data Verifying all tasks on Client A [1A[2KVerifying all tasks on Client B [1A[2K[16/26] [chromium] › e2e/tests/sync/supersync-models.spec.ts:403:7 › @supersync SuperSync Models › Project notes sync correctly [1A[2K[chromium] › e2e/tests/sync/supersync-models.spec.ts:403:7 › @supersync SuperSync Models › Project notes sync correctly [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/supersync-models.spec.ts:165:7 › @supersync SuperSync Models › Projects and their tasks sync correctly [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync-models.spec.ts:237:7 › @supersync SuperSync Models › Tags and tagged tasks sync correctly [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[17/26] [chromium] › e2e/tests/sync/supersync.spec.ts:69:7 › @supersync SuperSync E2E › 2.1 Client A creates task, Client B downloads it [1A[2K[18/26] [chromium] › e2e/tests/sync/supersync.spec.ts:131:7 › @supersync SuperSync E2E › 2.2 Both clients create different tasks [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:69:7 › @supersync SuperSync E2E › 2.1 Client A creates task, Client B downloads it [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:131:7 › @supersync SuperSync E2E › 2.2 Both clients create different tasks [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/supersync-models.spec.ts:403:7 › @supersync SuperSync Models › Project notes sync correctly Attempt 1 to open note dialog failed, retrying... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:131:7 › @supersync SuperSync E2E › 2.2 Both clients create different tasks [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[chromium] › e2e/tests/sync/supersync-advanced.spec.ts:50:7 › @supersync SuperSync Advanced › Large dataset sync (50 tasks) [LargeData] Creation complete. Verifying local count... [1A[2K[LargeData] Syncing Client A... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:131:7 › @supersync SuperSync E2E › 2.2 Both clients create different tasks [SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:69:7 › @supersync SuperSync E2E › 2.1 Client A creates task, Client B downloads it [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync-models.spec.ts:403:7 › @supersync SuperSync Models › Project notes sync correctly [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[19/26] [chromium] › e2e/tests/sync/supersync.spec.ts:196:7 › @supersync SuperSync E2E › 1.3 Update propagates between clients [1A[2K[chromium] › e2e/tests/sync/supersync-advanced.spec.ts:50:7 › @supersync SuperSync Advanced › Large dataset sync (50 tasks) [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[LargeData] Syncing Client B... [1A[2K[20/26] [chromium] › e2e/tests/sync/supersync.spec.ts:258:7 › @supersync SuperSync E2E › 1.4 Delete propagates between clients [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:196:7 › @supersync SuperSync E2E › 1.3 Update propagates between clients [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/supersync-advanced.spec.ts:50:7 › @supersync SuperSync Advanced › Large dataset sync (50 tasks) [LargeData] Verifying Client B count... [1A[2K[21/26] [chromium] › e2e/tests/sync/supersync.spec.ts:340:7 › @supersync SuperSync E2E › 3.1 Concurrent edits handled gracefully [1A[2K[LargeData] ✓ Success: Synced 50 tasks. [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:258:7 › @supersync SuperSync E2E › 1.4 Delete propagates between clients [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[22/26] [chromium] › e2e/tests/sync/supersync.spec.ts:415:7 › @supersync SuperSync E2E › 2.3 Client A creates parent, Client B creates subtask [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:340:7 › @supersync SuperSync E2E › 3.1 Concurrent edits handled gracefully [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:415:7 › @supersync SuperSync E2E › 2.3 Client A creates parent, Client B creates subtask [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:196:7 › @supersync SuperSync E2E › 1.3 Update propagates between clients [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:258:7 › @supersync SuperSync E2E › 1.4 Delete propagates between clients [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:340:7 › @supersync SuperSync E2E › 3.1 Concurrent edits handled gracefully [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:415:7 › @supersync SuperSync E2E › 2.3 Client A creates parent, Client B creates subtask [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[23/26] [chromium] › e2e/tests/sync/supersync.spec.ts:512:7 › @supersync SuperSync E2E › 4.1 Complex chain of actions syncs correctly [1A[2K[SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[24/26] [chromium] › e2e/tests/sync/supersync.spec.ts:724:7 › @supersync SuperSync E2E › 5.1 Archived tasks appear in worklog on both clients [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:512:7 › @supersync SuperSync E2E › 4.1 Complex chain of actions syncs correctly [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:340:7 › @supersync SuperSync E2E › 3.1 Concurrent edits handled gracefully [SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:724:7 › @supersync SuperSync E2E › 5.1 Archived tasks appear in worklog on both clients [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[25/26] [chromium] › e2e/tests/sync/supersync.spec.ts:895:7 › @supersync SuperSync E2E › 6.1 Time tracking syncs between clients [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:512:7 › @supersync SuperSync E2E › 4.1 Complex chain of actions syncs correctly [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[26/26] [chromium] › e2e/tests/sync/supersync.spec.ts:1033:7 › @supersync SuperSync E2E › 7.1 Three clients achieve eventual consistency [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:1033:7 › @supersync SuperSync E2E › 7.1 Three clients achieve eventual consistency [3-Client Test] Phase 1: Client A creates Task-1 [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:512:7 › @supersync SuperSync E2E › 4.1 Complex chain of actions syncs correctly [SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:724:7 › @supersync SuperSync E2E › 5.1 Archived tasks appear in worklog on both clients [Archive Test] Client A created task: Archive-Task1-1765368701284 [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:512:7 › @supersync SuperSync E2E › 4.1 Complex chain of actions syncs correctly [Chain Test] Client A created task: ProjectX-1765368698503 [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:724:7 › @supersync SuperSync E2E › 5.1 Archived tasks appear in worklog on both clients [Archive Test] Client A created task: Archive-Task2-1765368701284 [1A[2K[Archive Test] Client A marked Archive-Task1-1765368701284 as done [1A[2K[Archive Test] Client A marked Archive-Task2-1765368701284 as done [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:895:7 › @supersync SuperSync E2E › 6.1 Time tracking syncs between clients [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:1033:7 › @supersync SuperSync E2E › 7.1 Three clients achieve eventual consistency [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:724:7 › @supersync SuperSync E2E › 5.1 Archived tasks appear in worklog on both clients [Archive Test] Client A synced tasks [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:895:7 › @supersync SuperSync E2E › 6.1 Time tracking syncs between clients [TimeTrack Test] Client A created task: TimeTrack-1765368704669 [1A[2K[TimeTrack Test] Client A started time tracking [1A[2K[TimeTrack Test] Time tracking active [1A[2K[TimeTrack Test] Waiting 5 seconds for time to accumulate... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:1033:7 › @supersync SuperSync E2E › 7.1 Three clients achieve eventual consistency [3-Client Test] Client A created: Task1-1765368705251 [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:512:7 › @supersync SuperSync E2E › 4.1 Complex chain of actions syncs correctly [Chain Test] Client B received initial task [1A[2K[Chain Test] Client B renamed task to: ProjectX-Planning-1765368698503 [1A[2K[Chain Test] Client B added subtask: Research-1765368698503 [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:1033:7 › @supersync SuperSync E2E › 7.1 Three clients achieve eventual consistency [3-Client Test] Client A synced [1A[2K[3-Client Test] Phase 2: Client B syncs and creates Task-2 [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:724:7 › @supersync SuperSync E2E › 5.1 Archived tasks appear in worklog on both clients [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:512:7 › @supersync SuperSync E2E › 4.1 Complex chain of actions syncs correctly [Chain Test] Client A received rename and subtask [1A[2K[Chain Test] Client A marked Research-1765368698503 as done [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:1033:7 › @supersync SuperSync E2E › 7.1 Three clients achieve eventual consistency [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:895:7 › @supersync SuperSync E2E › 6.1 Time tracking syncs between clients [TimeTrack Test] Client A stopped time tracking [1A[2K[TimeTrack Test] Client A recorded time: - [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:1033:7 › @supersync SuperSync E2E › 7.1 Three clients achieve eventual consistency [SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:512:7 › @supersync SuperSync E2E › 4.1 Complex chain of actions syncs correctly [Chain Test] Client A added subtask: Implementation-1765368698503 [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:724:7 › @supersync SuperSync E2E › 5.1 Archived tasks appear in worklog on both clients [Archive Test] Client B synced (downloaded tasks) [1A[2K[Archive Test] Client B received both tasks [1A[2K[Archive Test] Client B clicked Finish Day [1A[2K[Archive Test] Client B on daily summary page [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:1033:7 › @supersync SuperSync E2E › 7.1 Three clients achieve eventual consistency [SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:724:7 › @supersync SuperSync E2E › 5.1 Archived tasks appear in worklog on both clients [Archive Test] Client B clicked Save and go home (archiving) [1A[2K[Archive Test] Client B back on work view after archiving [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:895:7 › @supersync SuperSync E2E › 6.1 Time tracking syncs between clients [TimeTrack Test] Client A synced [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:724:7 › @supersync SuperSync E2E › 5.1 Archived tasks appear in worklog on both clients [Archive Test] Client B synced (uploaded archive) [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:1033:7 › @supersync SuperSync E2E › 7.1 Three clients achieve eventual consistency [3-Client Test] Client B received Task-1 [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:512:7 › @supersync SuperSync E2E › 4.1 Complex chain of actions syncs correctly [Chain Test] Client B received done status and new subtask [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:724:7 › @supersync SuperSync E2E › 5.1 Archived tasks appear in worklog on both clients [Archive Test] Client A synced (downloaded archive) [1A[2K[Archive Test] Client A navigated to worklog [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:512:7 › @supersync SuperSync E2E › 4.1 Complex chain of actions syncs correctly [Chain Test] Client B added subtask: Testing-1765368698503 [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:724:7 › @supersync SuperSync E2E › 5.1 Archived tasks appear in worklog on both clients [Archive Test] Client B navigated to worklog [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:1033:7 › @supersync SuperSync E2E › 7.1 Three clients achieve eventual consistency [3-Client Test] Client B created: Task2-1765368705251 [1A[2K[3-Client Test] Phase 3: Client C syncs, creates Task-3, renames Task-1 [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:512:7 › @supersync SuperSync E2E › 4.1 Complex chain of actions syncs correctly [Chain Test] Client B marked Testing-1765368698503 as done [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:895:7 › @supersync SuperSync E2E › 6.1 Time tracking syncs between clients [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:724:7 › @supersync SuperSync E2E › 5.1 Archived tasks appear in worklog on both clients [Archive Test] Client A worklog has both tasks [1A[2K[Archive Test] Client B worklog has both tasks [1A[2K[Archive Test] ✓ All verifications passed! [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:1033:7 › @supersync SuperSync E2E › 7.1 Three clients achieve eventual consistency [SuperSyncPage] Initial sync started automatically, waiting for completion... [1A[2K[SuperSyncPage] Conflict dialog detected, using remote... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:512:7 › @supersync SuperSync E2E › 4.1 Complex chain of actions syncs correctly [Chain Test] Verifying final state... [1A[2K[Chain Test] ✓ All verifications passed! [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:1033:7 › @supersync SuperSync E2E › 7.1 Three clients achieve eventual consistency [SuperSyncPage] Clicking Apply to apply resolution... [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:895:7 › @supersync SuperSync E2E › 6.1 Time tracking syncs between clients [TimeTrack Test] Client B synced [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:1033:7 › @supersync SuperSync E2E › 7.1 Three clients achieve eventual consistency [3-Client Test] Client C received Task-1 [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:895:7 › @supersync SuperSync E2E › 6.1 Time tracking syncs between clients [TimeTrack Test] Client B shows time: - [1A[2K[TimeTrack Test] Time values match on both clients [1A[2K[TimeTrack Test] ✓ All verifications passed! [1A[2K[chromium] › e2e/tests/sync/supersync.spec.ts:1033:7 › @supersync SuperSync E2E › 7.1 Three clients achieve eventual consistency [3-Client Test] Client C created: Task3-1765368705251 [1A[2K[3-Client Test] Client C renamed Task-1 to: Task1-Renamed-1765368705251 [1A[2K[3-Client Test] Phase 4: Client B syncs (uploads Task-2) [1A[2K[3-Client Test] Client B synced [1A[2K[3-Client Test] Phase 5: Client C syncs [1A[2K[3-Client Test] Client C received Task-2 [1A[2K[3-Client Test] Phase 6: Client A syncs [1A[2K[3-Client Test] Client A received all updates [1A[2K[3-Client Test] Phase 7: Client B syncs [1A[2K[3-Client Test] Client B received all updates [1A[2K[3-Client Test] Phase 8: Verifying eventual consistency [1A[2K[3-Client Test] Client A task count: 3 [1A[2K[3-Client Test] Client B task count: 3 [1A[2K[3-Client Test] Client C task count: 3 [1A[2K[3-Client Test] Task-1 (renamed) exists on all clients [1A[2K[3-Client Test] Task-2 exists on all clients [1A[2K[3-Client Test] Task-3 exists on all clients [1A[2K[3-Client Test] ✓ All three clients have identical state! [1A[2K[3-Client Test] ✓ Eventual consistency achieved! [1A[2K 4 skipped 22 passed (2.3m) failures. |
||
|
|
b6fc65831c | feat(superSync): implement prisma and postgres | ||
|
|
5ec4cc6444 |
test(sync): add offline queue persistence tests for OperationLogStoreService
Add tests for previously untested methods: - appendBatch: batch append operations in single transaction - getOpById: retrieve operation entry by ID - markApplied: update application status from pending to applied - getPendingRemoteOps: get pending remote ops for crash recovery - markFailed: increment retry count and handle max retries - getFailedRemoteOps: get failed remote operations Also add: - Crash recovery scenario tests - AppliedOpIds cache invalidation tests |