agent-orchestrator/ui-electrobun/tests/e2e/specs/files.test.ts
Hibryda dd1d692e7b test(electrobun): expand E2E suite — 75 new tests (120 total, 14 spec files)
New specs: search, files, comms, tasks, theme, groups, keyboard,
notifications, diagnostics, splash. All under 300 lines, CSS class
selectors matching actual components, display toggle aware.
2026-03-22 05:01:21 +01:00

106 lines
3 KiB
TypeScript

/**
* File browser tests — tree, file viewer, editor, image/pdf/csv support.
*/
describe("File browser", () => {
it("should render the file browser container", async () => {
// File browser lives inside a project card tab
const fb = await $(".file-browser");
if (await fb.isExisting()) {
expect(await fb.isDisplayed()).toBe(true);
}
});
it("should show the tree panel", async () => {
const tree = await $(".fb-tree");
if (await tree.isExisting()) {
expect(await tree.isDisplayed()).toBe(true);
}
});
it("should show the viewer panel", async () => {
const viewer = await $(".fb-viewer");
if (await viewer.isExisting()) {
expect(await viewer.isDisplayed()).toBe(true);
}
});
it("should show directory rows in tree", async () => {
const dirs = await $$(".fb-dir");
if (dirs.length > 0) {
expect(dirs[0]).toBeDefined();
expect(await dirs[0].isDisplayed()).toBe(true);
}
});
it("should show file rows in tree", async () => {
const files = await $$(".fb-file");
if (files.length > 0) {
expect(files[0]).toBeDefined();
}
});
it("should show 'Select a file' placeholder when no file selected", async () => {
const empty = await $(".fb-empty");
if (await empty.isExisting()) {
const text = await empty.getText();
expect(text.toLowerCase()).toContain("select");
}
});
it("should expand a directory on click", async () => {
const dirs = await $$(".fb-dir");
if (dirs.length === 0) return;
await dirs[0].click();
await browser.pause(500);
// Check if chevron rotated (open class)
const chevron = await dirs[0].$(".fb-chevron");
if (await chevron.isExisting()) {
const cls = await chevron.getAttribute("class");
expect(cls).toContain("open");
}
});
it("should select a file and show editor header", async () => {
const files = await $$(".fb-file");
if (files.length === 0) return;
await files[0].click();
await browser.pause(500);
// Should show either editor header or image or empty
const header = await $(".fb-editor-header");
const image = await $(".fb-image-wrap");
const error = await $(".fb-error");
const loading = await $(".fb-empty");
const anyVisible =
(await header.isExisting() && await header.isDisplayed()) ||
(await image.isExisting() && await image.isDisplayed()) ||
(await error.isExisting()) ||
(await loading.isExisting());
expect(anyVisible).toBe(true);
});
it("should show file type icon in tree", async () => {
const icons = await $$(".file-type");
if (icons.length > 0) {
const text = await icons[0].getText();
expect(text.length).toBeGreaterThan(0);
}
});
it("should show selected state on clicked file", async () => {
const files = await $$(".fb-file");
if (files.length === 0) return;
await files[0].click();
await browser.pause(300);
const cls = await files[0].getAttribute("class");
expect(cls).toContain("selected");
});
});