Radish alpha
r
rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5
Radicle web interface
Radicle
Git
Remove sinon in favor of existing APIs of playwright and vitest
Sebastian Martinez committed 1 year ago
commit a34056b2bff10ec7032a5774a4e8f738f9f6ebfc
parent 7c9f1a0
14 files changed +19 -269
modified package-lock.json
@@ -45,7 +45,6 @@
        "@types/lodash": "^4.17.7",
        "@types/md5": "^2.3.5",
        "@types/node": "^20.14.12",
-
        "@types/sinon": "^17.0.3",
        "@types/wait-on": "^5.3.4",
        "@typescript-eslint/parser": "^8.3.0",
        "chalk": "^5.3.0",
@@ -59,7 +58,6 @@
        "happy-dom": "^15.0.0",
        "prettier": "^3.3.3",
        "prettier-plugin-svelte": "^3.2.6",
-
        "sinon": "^18.0.0",
        "svelte-check": "^3.8.6",
        "svelte-eslint-parser": "^0.41.0",
        "typescript": "^5.5.4",
@@ -1000,50 +998,6 @@
        "url": "https://github.com/sponsors/sindresorhus"
      }
    },
-
    "node_modules/@sinonjs/commons": {
-
      "version": "3.0.1",
-
      "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz",
-
      "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==",
-
      "dev": true,
-
      "dependencies": {
-
        "type-detect": "4.0.8"
-
      }
-
    },
-
    "node_modules/@sinonjs/fake-timers": {
-
      "version": "11.3.1",
-
      "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.3.1.tgz",
-
      "integrity": "sha512-EVJO7nW5M/F5Tur0Rf2z/QoMo+1Ia963RiMtapiQrEWvY0iBUvADo8Beegwjpnle5BHkyHuoxSTW3jF43H1XRA==",
-
      "dev": true,
-
      "dependencies": {
-
        "@sinonjs/commons": "^3.0.1"
-
      }
-
    },
-
    "node_modules/@sinonjs/samsam": {
-
      "version": "8.0.0",
-
      "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz",
-
      "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==",
-
      "dev": true,
-
      "dependencies": {
-
        "@sinonjs/commons": "^2.0.0",
-
        "lodash.get": "^4.4.2",
-
        "type-detect": "^4.0.8"
-
      }
-
    },
-
    "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": {
-
      "version": "2.0.0",
-
      "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz",
-
      "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==",
-
      "dev": true,
-
      "dependencies": {
-
        "type-detect": "4.0.8"
-
      }
-
    },
-
    "node_modules/@sinonjs/text-encoding": {
-
      "version": "0.7.3",
-
      "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz",
-
      "integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==",
-
      "dev": true
-
    },
    "node_modules/@sveltejs/vite-plugin-svelte": {
      "version": "3.1.2",
      "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.2.tgz",
@@ -1162,21 +1116,6 @@
      "integrity": "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==",
      "dev": true
    },
-
    "node_modules/@types/sinon": {
-
      "version": "17.0.3",
-
      "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.3.tgz",
-
      "integrity": "sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==",
-
      "dev": true,
-
      "dependencies": {
-
        "@types/sinonjs__fake-timers": "*"
-
      }
-
    },
-
    "node_modules/@types/sinonjs__fake-timers": {
-
      "version": "8.1.5",
-
      "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz",
-
      "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==",
-
      "dev": true
-
    },
    "node_modules/@types/trusted-types": {
      "version": "2.0.7",
      "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
@@ -2050,15 +1989,6 @@
        "url": "https://github.com/sponsors/wooorm"
      }
    },
-
    "node_modules/diff": {
-
      "version": "5.2.0",
-
      "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
-
      "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
-
      "dev": true,
-
      "engines": {
-
        "node": ">=0.3.1"
-
      }
-
    },
    "node_modules/dompurify": {
      "version": "3.1.6",
      "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz",
@@ -3117,12 +3047,6 @@
        "graceful-fs": "^4.1.6"
      }
    },
-
    "node_modules/just-extend": {
-
      "version": "6.2.0",
-
      "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz",
-
      "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==",
-
      "dev": true
-
    },
    "node_modules/katex": {
      "version": "0.16.11",
      "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.11.tgz",
@@ -3226,12 +3150,6 @@
      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
    },
-
    "node_modules/lodash.get": {
-
      "version": "4.4.2",
-
      "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
-
      "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
-
      "dev": true
-
    },
    "node_modules/lodash.merge": {
      "version": "4.6.2",
      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -3578,19 +3496,6 @@
      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
      "dev": true
    },
-
    "node_modules/nise": {
-
      "version": "6.0.0",
-
      "resolved": "https://registry.npmjs.org/nise/-/nise-6.0.0.tgz",
-
      "integrity": "sha512-K8ePqo9BFvN31HXwEtTNGzgrPpmvgciDsFz8aztFjt4LqKO/JeFD8tBOeuDiCMXrIl/m1YvfH8auSpxfaD09wg==",
-
      "dev": true,
-
      "dependencies": {
-
        "@sinonjs/commons": "^3.0.0",
-
        "@sinonjs/fake-timers": "^11.2.2",
-
        "@sinonjs/text-encoding": "^0.7.2",
-
        "just-extend": "^6.2.0",
-
        "path-to-regexp": "^6.2.1"
-
      }
-
    },
    "node_modules/normalize-path": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -3749,12 +3654,6 @@
        "node": ">=8"
      }
    },
-
    "node_modules/path-to-regexp": {
-
      "version": "6.2.2",
-
      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz",
-
      "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==",
-
      "dev": true
-
    },
    "node_modules/pathe": {
      "version": "1.1.2",
      "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
@@ -4239,24 +4138,6 @@
        "url": "https://github.com/sponsors/isaacs"
      }
    },
-
    "node_modules/sinon": {
-
      "version": "18.0.0",
-
      "resolved": "https://registry.npmjs.org/sinon/-/sinon-18.0.0.tgz",
-
      "integrity": "sha512-+dXDXzD1sBO6HlmZDd7mXZCR/y5ECiEiGCBSGuFD/kZ0bDTofPYc6JaeGmPSF+1j1MejGUWkORbYOLDyvqCWpA==",
-
      "dev": true,
-
      "dependencies": {
-
        "@sinonjs/commons": "^3.0.1",
-
        "@sinonjs/fake-timers": "^11.2.2",
-
        "@sinonjs/samsam": "^8.0.0",
-
        "diff": "^5.2.0",
-
        "nise": "^6.0.0",
-
        "supports-color": "^7"
-
      },
-
      "funding": {
-
        "type": "opencollective",
-
        "url": "https://opencollective.com/sinon"
-
      }
-
    },
    "node_modules/sorcery": {
      "version": "0.11.1",
      "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.1.tgz",
@@ -4665,15 +4546,6 @@
        "node": ">= 0.8.0"
      }
    },
-
    "node_modules/type-detect": {
-
      "version": "4.0.8",
-
      "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
-
      "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
-
      "dev": true,
-
      "engines": {
-
        "node": ">=4"
-
      }
-
    },
    "node_modules/typescript": {
      "version": "5.5.4",
      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
modified package.json
@@ -30,7 +30,6 @@
    "@types/lodash": "^4.17.7",
    "@types/md5": "^2.3.5",
    "@types/node": "^20.14.12",
-
    "@types/sinon": "^17.0.3",
    "@types/wait-on": "^5.3.4",
    "@typescript-eslint/parser": "^8.3.0",
    "chalk": "^5.3.0",
@@ -44,7 +43,6 @@
    "happy-dom": "^15.0.0",
    "prettier": "^3.3.3",
    "prettier-plugin-svelte": "^3.2.6",
-
    "sinon": "^18.0.0",
    "svelte-check": "^3.8.6",
    "svelte-eslint-parser": "^0.41.0",
    "typescript": "^5.5.4",
modified tests/e2e/repo/commit.spec.ts
@@ -7,7 +7,6 @@ import {
  test,
} from "@tests/support/fixtures.js";
import { changeBranch } from "@tests/support/repo";
-
import sinon from "sinon";

const commitUrl = `${sourceBrowsingUrl}/commits/${bobHead}`;

@@ -20,13 +19,7 @@ test("navigation from commit list", async ({ page }) => {
});

test("relative timestamps", async ({ page }) => {
-
  await page.addInitScript(() => {
-
    sinon.useFakeTimers({
-
      now: new Date("December 21 2022 12:00:00").valueOf(),
-
      shouldClearNativeTimers: true,
-
      shouldAdvanceTime: false,
-
    });
-
  });
+
  await page.clock.setFixedTime(new Date("December 21 2022 12:00:00"));
  await page.goto(commitUrl);
  await expect(
    page.getByText(`Bob Belcher committed ${shortBobHead}`),
modified tests/e2e/repo/commits.spec.ts
@@ -10,7 +10,6 @@ import {
  test,
} from "@tests/support/fixtures.js";
import { changeBranch, createRepo } from "@tests/support/repo";
-
import sinon from "sinon";

test("peer and branch switching", async ({ page }) => {
  await page.goto(sourceBrowsingUrl);
@@ -149,14 +148,7 @@ test("expand commit message", async ({ page }) => {
});

test("relative timestamps", async ({ page }) => {
-
  await page.addInitScript(() => {
-
    sinon.useFakeTimers({
-
      now: new Date("December 21 2022 12:00:00").valueOf(),
-
      shouldClearNativeTimers: true,
-
      shouldAdvanceTime: false,
-
    });
-
  });
-

+
  await page.clock.setFixedTime(new Date("December 21 2022 12:00:00"));
  await page.goto(sourceBrowsingUrl);
  await page
    .getByRole("link", { name: `Commits ${aliceMainCommitCount}` })
modified tests/support/fixtures.ts
@@ -5,7 +5,6 @@ import type * as Stream from "node:stream";

import * as Fs from "node:fs/promises";
import * as Path from "node:path";
-
import { fileURLToPath } from "node:url";
import { test as base, expect } from "@playwright/test";
import { execa } from "execa";

@@ -32,14 +31,6 @@ export const test = base.extend<{
  forAllTests: [
    async ({ outputLog, page }, use) => {
      const browserLabel = logLabel.logPrefix("browser");
-
      let sinonPath = fileURLToPath(import.meta.resolve("sinon"));
-
      // The exports in sinon-esm.js mess up our test pipeline
-
      if (sinonPath.endsWith("-esm.js")) {
-
        sinonPath = sinonPath.replace("-esm", "");
-
      }
-
      await page.addInitScript({
-
        path: sinonPath,
-
      });
      page.on("console", msg => {
        // Ignore common console logs that we don't care about.
        if (
@@ -48,18 +39,7 @@ export const test = base.extend<{
          msg.text().startsWith("Not able to parse url") ||
          msg
            .text()
-
            .includes("Please make sure it wasn't preloaded for nothing.") ||
-
          // @sinonjs/fake-timers uses a global variable called `timers` which
-
          // is also used by node, so vite erronously detects this and shows a
-
          // warning whenever we install fake timers in tests. We suppress the
-
          // warning here to avoid clogging the logs. For more info see:
-
          //
-
          //   https://vitejs.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility
-
          msg
-
            .text()
-
            .startsWith(
-
              'Module "timers" has been externalized for browser compatibility.',
-
            )
+
            .includes("Please make sure it wasn't preloaded for nothing.")
        ) {
          return;
        }
modified tests/unit/mutexExecutor.test.ts
@@ -1,5 +1,4 @@
-
import * as sinon from "sinon";
-
import { describe, expect, test } from "vitest";
+
import { describe, expect, test, vi } from "vitest";

import * as mutexExecutor from "@app/lib/mutexExecutor";
import { sleep } from "@app/lib/sleep";
@@ -58,17 +57,17 @@ describe("executor", () => {

  test("triggers abort signal event", async () => {
    const e = mutexExecutor.create();
-
    const abortListener = sinon.spy();
+
    const abortListener = vi.fn();

    void e.run(async abort => {
      abort.addEventListener("abort", abortListener);
      await sleep(10);
      return "first";
    });
-
    expect(abortListener.called).toBe(false);
+
    expect(abortListener).not.toHaveBeenCalled();
    // eslint-disable-next-line @typescript-eslint/no-empty-function
    void e.run(async () => {});
-
    expect(abortListener.called).toBe(true);
+
    expect(abortListener).toHaveBeenCalled();
  });

  test("don’t throw error on aborted task", async () => {
modified tests/visual/desktop/cob.spec.ts
@@ -1,14 +1,7 @@
import { test, expect, cobUrl } from "@tests/support/fixtures.js";
-
import sinon from "sinon";

test.beforeEach(async ({ page }) => {
-
  await page.addInitScript(() => {
-
    sinon.useFakeTimers({
-
      now: new Date("November 24 2022 12:00:00").valueOf(),
-
      shouldClearNativeTimers: true,
-
      shouldAdvanceTime: false,
-
    });
-
  });
+
  await page.clock.setFixedTime(new Date("November 21 2022 12:00:00"));
});

test("issues page", async ({ page }) => {
modified tests/visual/desktop/landingPage.spec.ts
@@ -1,5 +1,4 @@
import { test, expect } from "@tests/support/fixtures.js";
-
import sinon from "sinon";

test("pinned repos", async ({ page }) => {
  await page.addInitScript(() => {
@@ -7,13 +6,9 @@ test("pinned repos", async ({ page }) => {
      "configuredPreferredSeeds",
      JSON.stringify([{ hostname: "127.0.0.1", port: 8081, scheme: "http" }]),
    );
-
    sinon.useFakeTimers({
-
      now: new Date("November 24 2022 12:00:00").valueOf(),
-
      shouldClearNativeTimers: true,
-
      shouldAdvanceTime: false,
-
    });
  });

+
  await page.clock.setFixedTime(new Date("November 24 2022 12:00:00"));
  await page.goto("/", { waitUntil: "networkidle" });
  await expect(page).toHaveScreenshot();
});
@@ -24,13 +19,9 @@ test("load repos error", async ({ page }) => {
      "configuredPreferredSeeds",
      JSON.stringify([{ hostname: "127.0.0.1", port: 8081, scheme: "http" }]),
    );
-
    sinon.useFakeTimers({
-
      now: new Date("November 24 2022 12:00:00").valueOf(),
-
      shouldClearNativeTimers: true,
-
      shouldAdvanceTime: false,
-
    });
  });

+
  await page.clock.setFixedTime(new Date("November 24 2022 12:00:00"));
  await page.route(
    ({ pathname }) => pathname === "/api/v1/repos",
    route => route.fulfill({ status: 500 }),
modified tests/visual/desktop/node.spec.ts
@@ -1,15 +1,7 @@
import { test, expect } from "@tests/support/fixtures.js";
-
import sinon from "sinon";

test("node page", async ({ page }) => {
-
  await page.addInitScript(() => {
-
    sinon.useFakeTimers({
-
      now: new Date("November 24 2022 12:00:00").valueOf(),
-
      shouldClearNativeTimers: true,
-
      shouldAdvanceTime: false,
-
    });
-
  });
-

+
  await page.clock.setFixedTime(new Date("November 24 2022 12:00:00"));
  await page.goto("/nodes/radicle.local", { waitUntil: "networkidle" });
  await expect(page).toHaveScreenshot();
});
modified tests/visual/desktop/repo.spec.ts
@@ -7,7 +7,6 @@ import {
  markdownUrl,
  sourceBrowsingRid,
} from "@tests/support/fixtures.js";
-
import sinon from "sinon";

test("source page", async ({ page }) => {
  await page.goto(sourceBrowsingUrl, { waitUntil: "networkidle" });
@@ -15,14 +14,7 @@ test("source page", async ({ page }) => {
});

test("history page", async ({ page }) => {
-
  await page.addInitScript(() => {
-
    sinon.useFakeTimers({
-
      now: new Date("November 24 2022 12:00:00").valueOf(),
-
      shouldClearNativeTimers: true,
-
      shouldAdvanceTime: false,
-
    });
-
  });
-

+
  await page.clock.setFixedTime(new Date("November 24 2022 12:00:00"));
  await page.goto(
    `${sourceBrowsingUrl}/remotes/${aliceRemote.substring(8)}/history`,
    {
@@ -34,14 +26,7 @@ test("history page", async ({ page }) => {
});

test("commit page", async ({ page }) => {
-
  await page.addInitScript(() => {
-
    sinon.useFakeTimers({
-
      now: new Date("November 24 2022 12:00:00").valueOf(),
-
      shouldClearNativeTimers: true,
-
      shouldAdvanceTime: false,
-
    });
-
  });
-

+
  await page.clock.setFixedTime(new Date("November 24 2022 12:00:00"));
  await page.goto(
    `${sourceBrowsingUrl}/remotes/${aliceRemote.substring(
      8,
@@ -52,14 +37,7 @@ test("commit page", async ({ page }) => {
});

test("diff selection", async ({ page }) => {
-
  await page.addInitScript(() => {
-
    sinon.useFakeTimers({
-
      now: new Date("November 24 2022 12:00:00").valueOf(),
-
      shouldClearNativeTimers: true,
-
      shouldAdvanceTime: false,
-
    });
-
  });
-

+
  await page.clock.setFixedTime(new Date("November 24 2022 12:00:00"));
  await page.goto(`${cobUrl}/patches`);
  await page
    .getByRole("link", { name: "Taking another stab at the README" })
modified tests/visual/desktop/user.spec.ts
@@ -4,17 +4,9 @@ import {
  aliceRemote,
  bobRemote,
} from "@tests/support/fixtures.js";
-
import sinon from "sinon";

test("user page", async ({ page }) => {
-
  await page.addInitScript(() => {
-
    sinon.useFakeTimers({
-
      now: new Date("November 24 2022 12:00:00").valueOf(),
-
      shouldClearNativeTimers: true,
-
      shouldAdvanceTime: false,
-
    });
-
  });
-

+
  await page.clock.setFixedTime(new Date("November 24 2022 12:00:00"));
  await page.goto(`/nodes/radicle.local/users/${aliceRemote}`, {
    waitUntil: "networkidle",
  });
modified tests/visual/mobile/cob.spec.ts
@@ -1,14 +1,7 @@
import { test, expect, cobUrl } from "@tests/support/fixtures.js";
-
import sinon from "sinon";

test.beforeEach(async ({ page }) => {
-
  await page.addInitScript(() => {
-
    sinon.useFakeTimers({
-
      now: new Date("November 24 2022 12:00:00").valueOf(),
-
      shouldClearNativeTimers: true,
-
      shouldAdvanceTime: false,
-
    });
-
  });
+
  await page.clock.setFixedTime(new Date("November 24 2022 12:00:00"));
});

test("issues page", async ({ page }) => {
modified tests/visual/mobile/repo.spec.ts
@@ -4,7 +4,6 @@ import {
  sourceBrowsingUrl,
  test,
} from "@tests/support/fixtures.js";
-
import sinon from "sinon";

test("source tree page", async ({ page }) => {
  await page.goto(sourceBrowsingUrl, { waitUntil: "networkidle" });
@@ -12,14 +11,7 @@ test("source tree page", async ({ page }) => {
});

test("commits page", async ({ page }) => {
-
  await page.addInitScript(() => {
-
    sinon.useFakeTimers({
-
      now: new Date("November 24 2022 12:00:00").valueOf(),
-
      shouldClearNativeTimers: true,
-
      shouldAdvanceTime: false,
-
    });
-
  });
-

+
  await page.clock.setFixedTime(new Date("November 24 2022 12:00:00"));
  await page.goto(
    `${sourceBrowsingUrl}/remotes/${aliceRemote.substring(8)}/history`,
    {
@@ -31,14 +23,7 @@ test("commits page", async ({ page }) => {
});

test("commit page", async ({ page }) => {
-
  await page.addInitScript(() => {
-
    sinon.useFakeTimers({
-
      now: new Date("November 24 2022 12:00:00").valueOf(),
-
      shouldClearNativeTimers: true,
-
      shouldAdvanceTime: false,
-
    });
-
  });
-

+
  await page.clock.setFixedTime(new Date("November 24 2022 12:00:00"));
  await page.goto(
    `${sourceBrowsingUrl}/remotes/${aliceRemote.substring(
      8,
modified tests/visual/mobile/user.spec.ts
@@ -4,17 +4,9 @@ import {
  aliceRemote,
  bobRemote,
} from "@tests/support/fixtures.js";
-
import sinon from "sinon";

test("user page", async ({ page }) => {
-
  await page.addInitScript(() => {
-
    sinon.useFakeTimers({
-
      now: new Date("November 24 2022 12:00:00").valueOf(),
-
      shouldClearNativeTimers: true,
-
      shouldAdvanceTime: false,
-
    });
-
  });
-

+
  await page.clock.setFixedTime(new Date("November 24 2022 12:00:00"));
  await page.goto(`/nodes/radicle.local/users/${aliceRemote}`, {
    waitUntil: "networkidle",
  });