Skip to content

Commit 391f188

Browse files
Fix navigating to history when a file is selected
Co-authored-by: Thomas Scholtes <[email protected]> Signed-off-by: Rūdolfs Ošiņš <[email protected]>
1 parent b5980a1 commit 391f188

File tree

5 files changed

+116
-17
lines changed

5 files changed

+116
-17
lines changed

src/views/projects/Browser.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@
175175
<div class="source-tree sticky">
176176
<TreeComponent
177177
projectId={project.id}
178-
revision={revision ?? project.defaultBranch}
178+
{revision}
179179
{baseUrl}
180180
{fetchTree}
181181
{path}

src/views/projects/Tree.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
export let path: string;
1313
export let peer: string | undefined;
1414
export let projectId: string;
15-
export let revision: string;
15+
export let revision: string | undefined;
1616
export let tree: Tree;
1717
1818
const dispatch = createEventDispatcher<{ select: string }>();

src/views/projects/Tree/Folder.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
export let peer: string | undefined;
1616
export let prefix: string;
1717
export let projectId: string;
18-
export let revision: string;
18+
export let revision: string | undefined;
1919
2020
$: expanded = currentPath.indexOf(prefix) === 0;
2121
$: tree = expanded

tests/e2e/hashRouter.spec.ts

Lines changed: 62 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,39 +55,67 @@ test.describe("project page navigation", () => {
5555
});
5656

5757
test("navigate between tree and commit history", async ({ page }) => {
58-
const projectTreeURL = `/#${sourceBrowsingUrl}`;
58+
const projectTreeURL = `/#${sourceBrowsingUrl}/tree/${aliceMainHead}`;
5959

6060
await page.goto(projectTreeURL);
61+
await page
62+
.getByRole("progressbar", { name: "Page loading" })
63+
.waitFor({ state: "hidden" });
6164
await expect(page).toHaveURL(projectTreeURL);
6265

6366
await page.getByRole("link", { name: "6 commits" }).click();
64-
await expect(page).toHaveURL(`/#${sourceBrowsingUrl}/history`);
67+
await expect(page).toHaveURL(
68+
`/#${sourceBrowsingUrl}/history/${aliceMainHead}`,
69+
);
6570

6671
await expectBackAndForwardNavigationWorks(projectTreeURL, page);
6772
await expectUrlPersistsReload(page);
6873
});
6974

70-
test("navigate project paths", async ({ page }) => {
75+
test("navigate between tree and commit history while a file is selected", async ({
76+
page,
77+
}) => {
7178
const projectTreeURL = `/#${sourceBrowsingUrl}`;
7279

7380
await page.goto(projectTreeURL);
81+
await page
82+
.getByRole("progressbar", { name: "Page loading" })
83+
.waitFor({ state: "hidden" });
7484
await expect(page).toHaveURL(projectTreeURL);
7585

7686
await page.getByText(".hidden").click();
77-
await expect(page).toHaveURL(`${projectTreeURL}/tree/main/.hidden`);
87+
await expect(page).toHaveURL(`${projectTreeURL}/tree/.hidden`);
88+
89+
await page.getByRole("link", { name: "6 commits" }).click();
90+
await expect(page).toHaveURL(`${projectTreeURL}/history`);
91+
});
92+
93+
test("navigate project paths", async ({ page }) => {
94+
const projectTreeURL = `/#${sourceBrowsingUrl}/tree/${aliceMainHead}`;
95+
96+
await page.goto(projectTreeURL);
97+
await expect(page).toHaveURL(projectTreeURL);
98+
99+
await page.getByText(".hidden").click();
100+
await expect(page).toHaveURL(`${projectTreeURL}/.hidden`);
78101

79102
await page.getByText("bin/").click();
80103
await page.getByText("true").click();
81-
await expect(page).toHaveURL(`${projectTreeURL}/tree/main/bin/true`);
104+
await expect(page).toHaveURL(`${projectTreeURL}/bin/true`);
82105

83106
await expectBackAndForwardNavigationWorks(
84-
`${projectTreeURL}/tree/main/.hidden`,
107+
`${projectTreeURL}/.hidden`,
85108
page,
86109
);
87110
await expectUrlPersistsReload(page);
88111
});
89112

90-
test("navigate project paths with a selected peer", async ({ page }) => {
113+
test("navigate project paths with an explicitly selected peer", async ({
114+
page,
115+
}) => {
116+
// If a branch isn't explicitly specified, the code assumes the project
117+
// default branch is selected. We omit showing the default branch in the URL.
118+
91119
const projectTreeURL = `/#${sourceBrowsingUrl}/remotes/${aliceRemote.substring(
92120
8,
93121
)}`;
@@ -96,14 +124,38 @@ test.describe("project page navigation", () => {
96124
await expect(page).toHaveURL(projectTreeURL);
97125

98126
await page.getByText(".hidden").click();
99-
await expect(page).toHaveURL(`${projectTreeURL}/tree/main/.hidden`);
127+
await expect(page).toHaveURL(`${projectTreeURL}/tree/.hidden`);
128+
129+
await page.getByText("bin/").click();
130+
await page.getByText("true").click();
131+
await expect(page).toHaveURL(`${projectTreeURL}/tree/bin/true`);
132+
133+
await expectBackAndForwardNavigationWorks(
134+
`${projectTreeURL}/tree/.hidden`,
135+
page,
136+
);
137+
await expectUrlPersistsReload(page);
138+
});
139+
140+
test("navigate project paths with an explicitly selected peer and branch", async ({
141+
page,
142+
}) => {
143+
const projectTreeURL = `/#${sourceBrowsingUrl}/remotes/${aliceRemote.substring(
144+
8,
145+
)}/tree/main`;
146+
147+
await page.goto(projectTreeURL);
148+
await expect(page).toHaveURL(projectTreeURL);
149+
150+
await page.getByText(".hidden").click();
151+
await expect(page).toHaveURL(`${projectTreeURL}/.hidden`);
100152

101153
await page.getByText("bin/").click();
102154
await page.getByText("true").click();
103-
await expect(page).toHaveURL(`${projectTreeURL}/tree/main/bin/true`);
155+
await expect(page).toHaveURL(`${projectTreeURL}/bin/true`);
104156

105157
await expectBackAndForwardNavigationWorks(
106-
`${projectTreeURL}/tree/main/.hidden`,
158+
`${projectTreeURL}/.hidden`,
107159
page,
108160
);
109161
await expectUrlPersistsReload(page);

tests/e2e/historyRouter.spec.ts

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,24 @@ test.describe("project page navigation", () => {
7272
await expectUrlPersistsReload(page);
7373
});
7474

75+
test("navigate between tree and commit history while a file is selected", async ({
76+
page,
77+
}) => {
78+
const projectTreeURL = `${sourceBrowsingUrl}`;
79+
80+
await page.goto(projectTreeURL);
81+
await page
82+
.getByRole("progressbar", { name: "Page loading" })
83+
.waitFor({ state: "hidden" });
84+
await expect(page).toHaveURL(projectTreeURL);
85+
86+
await page.getByText(".hidden").click();
87+
await expect(page).toHaveURL(`${projectTreeURL}/tree/.hidden`);
88+
89+
await page.getByRole("link", { name: "6 commits" }).click();
90+
await expect(page).toHaveURL(`${sourceBrowsingUrl}/history`);
91+
});
92+
7593
test("navigate project paths", async ({ page }) => {
7694
const projectTreeURL = `${sourceBrowsingUrl}/tree/${aliceMainHead}`;
7795

@@ -92,7 +110,12 @@ test.describe("project page navigation", () => {
92110
await expectUrlPersistsReload(page);
93111
});
94112

95-
test("navigate project paths with a selected peer", async ({ page }) => {
113+
test("navigate project paths with an explicitly selected peer", async ({
114+
page,
115+
}) => {
116+
// If a branch isn't explicitly specified, the code assumes the project
117+
// default branch is selected. We omit showing the default branch in the URL.
118+
96119
const projectTreeURL = `${sourceBrowsingUrl}/remotes/${aliceRemote.substring(
97120
8,
98121
)}`;
@@ -101,14 +124,38 @@ test.describe("project page navigation", () => {
101124
await expect(page).toHaveURL(projectTreeURL);
102125

103126
await page.getByText(".hidden").click();
104-
await expect(page).toHaveURL(`${projectTreeURL}/tree/main/.hidden`);
127+
await expect(page).toHaveURL(`${projectTreeURL}/tree/.hidden`);
105128

106129
await page.getByText("bin/").click();
107130
await page.getByText("true").click();
108-
await expect(page).toHaveURL(`${projectTreeURL}/tree/main/bin/true`);
131+
await expect(page).toHaveURL(`${projectTreeURL}/tree/bin/true`);
109132

110133
await expectBackAndForwardNavigationWorks(
111-
`${projectTreeURL}/tree/main/.hidden`,
134+
`${projectTreeURL}/tree/.hidden`,
135+
page,
136+
);
137+
await expectUrlPersistsReload(page);
138+
});
139+
140+
test("navigate project paths with an explicitly selected peer and branch", async ({
141+
page,
142+
}) => {
143+
const projectTreeURL = `${sourceBrowsingUrl}/remotes/${aliceRemote.substring(
144+
8,
145+
)}/tree/main`;
146+
147+
await page.goto(projectTreeURL);
148+
await expect(page).toHaveURL(projectTreeURL);
149+
150+
await page.getByText(".hidden").click();
151+
await expect(page).toHaveURL(`${projectTreeURL}/.hidden`);
152+
153+
await page.getByText("bin/").click();
154+
await page.getByText("true").click();
155+
await expect(page).toHaveURL(`${projectTreeURL}/bin/true`);
156+
157+
await expectBackAndForwardNavigationWorks(
158+
`${projectTreeURL}/.hidden`,
112159
page,
113160
);
114161
await expectUrlPersistsReload(page);

0 commit comments

Comments
 (0)