Radish alpha
r
rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5
Radicle web interface
Radicle
Git
Fix mutation of commit listing in place
Merged did:key:z6MkkfM3...sVz5 opened 1 year ago

The commit listing on each patch revision started to be flaky when using browser navigation. It seems like the Array.sort() call started to reverse the order of the commit listing back to HEAD on top which isn’t what we wanted. Array.toReversed() returns a fresh copy of the reversed array which is less error prone.

check check-visual check-unit-test check-http-client-unit-test check-radicle-httpd check-e2e check-build check-http

πŸ‘‰ Preview πŸ‘‰ Workflow runs πŸ‘‰ Branch on GitHub

3 files changed +31 -2 2b058a10 β†’ 846daf0b
modified src/views/repos/Cob/Revision.svelte
@@ -437,7 +437,7 @@
        {/if}
        {#if response?.commits}
          <div class="commits">
-
            {#each response.commits.reverse() as commit}
+
            {#each response.commits.toReversed() as commit}
              <div class="commit" style:position="relative">
                <div class="commit-dot" />
                <CobCommitTeaser {commit} {baseUrl} {repoId} />
modified tests/e2e/repo/patch.spec.ts
@@ -117,3 +117,32 @@ test("view file navigation from changes tab", async ({ page }) => {
    `${cobUrl}/tree/8c900d6cb38811e099efb3cbbdbfaba817bcf970/README.md`,
  );
});
+

+
test("commit listing ordering keeping stable on browser navigation", async ({
+
  page,
+
}) => {
+
  await page.goto(`${cobUrl}/patches`);
+
  await page
+
    .getByRole("link", { name: "Taking another stab at the README" })
+
    .click();
+
  await page
+
    .getByRole("heading", { name: "Taking another stab at the README" })
+
    .waitFor();
+

+
  async function expectCorrectCommitListing() {
+
    const commits = await page.locator(".commit").all();
+
    expect(commits).toHaveLength(2);
+
    await expect(
+
      commits[0].getByText("Rewrite subtitle to README"),
+
    ).toBeVisible();
+
    await expect(commits[1].getByText("Add more text")).toBeVisible();
+
  }
+

+
  await expectCorrectCommitListing();
+
  await page.getByRole("link", { name: "Rewrite subtitle to README" }).click();
+
  await page.goBack();
+
  await page
+
    .getByRole("heading", { name: "Taking another stab at the README" })
+
    .waitFor();
+
  await expectCorrectCommitListing();
+
});
modified tsconfig.json
@@ -4,7 +4,7 @@
  "exclude": ["node_modules/*", "radicle-httpd/*"],
  "compilerOptions": {
    "noEmit": true,
-
    "target": "es2021",
+
    "target": "es2023",
    "module": "es2022",
    "types": ["vite/client"],
    "sourceMap": true,