Skip to content

Commit

Permalink
Fix mutation of commit listing in place
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
sebastinez committed Oct 21, 2024
1 parent 2b058a1 commit c6d506c
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/views/repos/Cob/Revision.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -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} />
Expand Down
32 changes: 32 additions & 0 deletions tests/e2e/repo/patch.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -117,3 +117,35 @@ 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();

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

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();

const commits2 = await page.locator(".commit").all();
await expect(commits2).toHaveLength(2);
await expect(
commits2[0].getByText("Rewrite subtitle to README"),
).toBeVisible();
await expect(commits2[1].getByText("Add more text")).toBeVisible();
});
2 changes: 1 addition & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"exclude": ["node_modules/*", "radicle-httpd/*"],
"compilerOptions": {
"noEmit": true,
"target": "es2021",
"target": "es2023",
"module": "es2022",
"types": ["vite/client"],
"sourceMap": true,
Expand Down

0 comments on commit c6d506c

Please sign in to comment.