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 846daf0
Show file tree
Hide file tree
Showing 3 changed files with 31 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
29 changes: 29 additions & 0 deletions tests/e2e/repo/patch.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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();
});
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 846daf0

Please sign in to comment.