diff --git a/web/src/plugins/logs/IndexList.vue b/web/src/plugins/logs/IndexList.vue
index 38abdcb32d..cf3945af66 100644
--- a/web/src/plugins/logs/IndexList.vue
+++ b/web/src/plugins/logs/IndexList.vue
@@ -39,7 +39,7 @@ along with this program. If not, see .
@update:model-value="handleMultiStreamSelection"
>
{
- const indexListSelectField = this.$refs.streamSelect;
- if (indexListSelectField) {
- // Clear the search input
- if (indexListSelectField.updateInputValue) {
- indexListSelectField.updateInputValue("");
- }
- // // Close the dropdown menu
- // if (indexListSelectField.hidePopup) {
- // indexListSelectField.hidePopup();
- // }
+ if (indexListSelectField?.updateInputValue) {
+ indexListSelectField.updateInputValue("");
+ }
+ // Reset virtual scroll to the top so the list starts from position 0
+ // the next time the dropdown is opened.
+ if (indexListSelectField?.scrollTo) {
+ indexListSelectField.scrollTo(0);
}
});
this.onStreamChange("");
diff --git a/web/src/plugins/traces/Index.spec.ts b/web/src/plugins/traces/Index.spec.ts
index 6d3b77d842..f9b085b1f6 100644
--- a/web/src/plugins/traces/Index.spec.ts
+++ b/web/src/plugins/traces/Index.spec.ts
@@ -207,9 +207,13 @@ vi.mock("@/composables/useTraces", () => ({
}),
}));
+const { mockGetStreams } = vi.hoisted(() => ({
+ mockGetStreams: vi.fn(),
+}));
+
vi.mock("@/composables/useStreams", () => ({
default: () => ({
- getStreams: vi.fn(() => Promise.resolve(mockStreamList)),
+ getStreams: mockGetStreams,
getStream: vi.fn((streamName) =>
Promise.resolve(mockStreamList.list.find((s) => s.name === streamName))
),
@@ -261,6 +265,7 @@ describe("Index.vue (Main Traces Page)", () => {
beforeEach(async () => {
// Reset mock data
+ mockGetStreams.mockResolvedValue(mockStreamList);
mockSearchObj.loading = false;
mockSearchObj.loadingStream = false;
mockSearchObj.data.stream.streamLists = [];
@@ -1114,14 +1119,7 @@ describe("Index.vue (Main Traces Page)", () => {
describe("Edge Cases", () => {
it("should handle empty stream list gracefully", async () => {
- const mockGetStreams = vi.fn(() => Promise.resolve({ list: [] }));
-
- vi.doMock("@/composables/useStreams", () => ({
- default: () => ({
- getStreams: mockGetStreams,
- getStream: vi.fn(),
- }),
- }));
+ mockGetStreams.mockResolvedValueOnce({ list: [] });
wrapper = mount(Index, {
attachTo: node,