From 11ff38dd40177ecc151a2984fa7e124cf61ed657 Mon Sep 17 00:00:00 2001
From: Beowulf <beowulf@beocode.eu>
Date: Sun, 7 Jul 2024 19:59:32 +0200
Subject: [PATCH] fix branch selector in commit graph

Regression from https://codeberg.org/forgejo/forgejo/commit/5ef80ceb6437fa979d4ac567fa4b8c65c7e063d6
---
 .../commit-graph-branch-selector.test.e2e.js  | 25 +++++++++++++++++++
 web_src/js/features/repo-graph.js             |  6 ++---
 2 files changed, 28 insertions(+), 3 deletions(-)
 create mode 100644 tests/e2e/commit-graph-branch-selector.test.e2e.js

diff --git a/tests/e2e/commit-graph-branch-selector.test.e2e.js b/tests/e2e/commit-graph-branch-selector.test.e2e.js
new file mode 100644
index 0000000000..b19277c114
--- /dev/null
+++ b/tests/e2e/commit-graph-branch-selector.test.e2e.js
@@ -0,0 +1,25 @@
+// @ts-check
+import {test, expect} from '@playwright/test';
+import {login_user, load_logged_in_context} from './utils_e2e.js';
+
+test.beforeAll(async ({browser}, workerInfo) => {
+  await login_user(browser, workerInfo, 'user2');
+});
+
+test('Switch branch', async ({browser}, workerInfo) => {
+  const context = await load_logged_in_context(browser, workerInfo, 'user2');
+  const page = await context.newPage();
+  const response = await page.goto('/user2/repo1/graph');
+  await expect(response?.status()).toBe(200);
+
+  await page.click('#flow-select-refs-dropdown');
+  const input = page.locator('#flow-select-refs-dropdown');
+  await input.pressSequentially('develop', {delay: 50});
+  await input.press('Enter');
+
+  await page.waitForLoadState('networkidle');
+
+  await expect(page.locator('#loading-indicator')).not.toBeVisible();
+  await expect(page.locator('#rel-container')).toBeVisible();
+  await expect(page.locator('#rev-container')).toBeVisible();
+});
diff --git a/web_src/js/features/repo-graph.js b/web_src/js/features/repo-graph.js
index 0086b92021..689b6f1369 100644
--- a/web_src/js/features/repo-graph.js
+++ b/web_src/js/features/repo-graph.js
@@ -69,9 +69,9 @@ export function initRepoGraphGit() {
       const html = await response.text();
       const div = document.createElement('div');
       div.innerHTML = html;
-      document.getElementById('pagination').innerHTML = div.getElementById('pagination').innerHTML;
-      document.getElementById('rel-container').innerHTML = div.getElementById('rel-container').innerHTML;
-      document.getElementById('rev-container').innerHTML = div.getElementById('rev-container').innerHTML;
+      document.getElementById('pagination').innerHTML = div.querySelector('#pagination').innerHTML;
+      document.getElementById('rel-container').innerHTML = div.querySelector('#rel-container').innerHTML;
+      document.getElementById('rev-container').innerHTML = div.querySelector('#rev-container').innerHTML;
       hideElem('#loading-indicator');
       showElem('#rel-container');
       showElem('#rev-container');