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.
85 lines
2.5 KiB
TypeScript
85 lines
2.5 KiB
TypeScript
/**
|
|
* Communications tab tests — channels, DMs, message area, send form.
|
|
*/
|
|
|
|
describe("Communications tab", () => {
|
|
it("should render the comms tab container", async () => {
|
|
const comms = await $(".comms-tab");
|
|
if (await comms.isExisting()) {
|
|
expect(await comms.isDisplayed()).toBe(true);
|
|
}
|
|
});
|
|
|
|
it("should show mode toggle bar with Channels and DMs", async () => {
|
|
const modeBar = await $(".comms-mode-bar");
|
|
if (!(await modeBar.isExisting())) return;
|
|
|
|
const buttons = await $$(".mode-btn");
|
|
expect(buttons.length).toBe(2);
|
|
|
|
const texts = await Promise.all(buttons.map((b) => b.getText()));
|
|
expect(texts).toContain("Channels");
|
|
expect(texts).toContain("DMs");
|
|
});
|
|
|
|
it("should highlight the active mode button", async () => {
|
|
const activeBtn = await $(".mode-btn.active");
|
|
if (await activeBtn.isExisting()) {
|
|
expect(await activeBtn.isDisplayed()).toBe(true);
|
|
}
|
|
});
|
|
|
|
it("should show the comms sidebar", async () => {
|
|
const sidebar = await $(".comms-sidebar");
|
|
if (await sidebar.isExisting()) {
|
|
expect(await sidebar.isDisplayed()).toBe(true);
|
|
}
|
|
});
|
|
|
|
it("should show channel list with hash prefix", async () => {
|
|
const hashes = await $$(".ch-hash");
|
|
if (hashes.length > 0) {
|
|
const text = await hashes[0].getText();
|
|
expect(text).toBe("#");
|
|
}
|
|
});
|
|
|
|
it("should show message area", async () => {
|
|
const messages = await $(".comms-messages");
|
|
if (await messages.isExisting()) {
|
|
expect(await messages.isDisplayed()).toBe(true);
|
|
}
|
|
});
|
|
|
|
it("should show the message input bar", async () => {
|
|
const inputBar = await $(".msg-input-bar");
|
|
if (await inputBar.isExisting()) {
|
|
expect(await inputBar.isDisplayed()).toBe(true);
|
|
}
|
|
});
|
|
|
|
it("should have a send button that is disabled when input is empty", async () => {
|
|
const sendBtn = await $(".msg-send-btn");
|
|
if (!(await sendBtn.isExisting())) return;
|
|
|
|
const disabled = await sendBtn.getAttribute("disabled");
|
|
// When input is empty, send button should be disabled
|
|
expect(disabled).not.toBeNull();
|
|
});
|
|
|
|
it("should switch to DMs mode on DMs button click", async () => {
|
|
const buttons = await $$(".mode-btn");
|
|
if (buttons.length < 2) return;
|
|
|
|
// Click DMs button
|
|
await buttons[1].click();
|
|
await browser.pause(300);
|
|
|
|
const cls = await buttons[1].getAttribute("class");
|
|
expect(cls).toContain("active");
|
|
|
|
// Switch back to channels for other tests
|
|
await buttons[0].click();
|
|
await browser.pause(300);
|
|
});
|
|
});
|