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,