/** * Centralized CSS selectors for all E2E specs. * * Both Tauri (WebKit2GTK via tauri-driver) and Electrobun (WebKitGTK) render * the same Svelte frontend. These selectors work across both stacks. * * Convention: data-testid where available, CSS class fallback. */ // ── App Shell ── export const APP_SHELL = '.app-shell'; export const WORKSPACE = '.workspace'; export const PROJECT_GRID = '.project-grid'; // ── Sidebar ── export const SIDEBAR = '.sidebar'; export const SIDEBAR_RAIL = '[data-testid="sidebar-rail"]'; export const SIDEBAR_PANEL = '.sidebar-panel'; export const SIDEBAR_ICON = '.sidebar-icon'; export const SETTINGS_BTN = '[data-testid="settings-btn"]'; export const PANEL_CLOSE = '.panel-close'; // ── Groups ── export const GROUP_BTN = '.group-btn'; export const GROUP_CIRCLE = '.group-circle'; export const GROUP_BTN_ACTIVE = '.group-btn.active'; export const ADD_GROUP_BTN = '.add-group-btn'; export const GROUP_BADGE = '.group-badge'; // ── Project Cards ── export const PROJECT_CARD = '.project-card'; export const PROJECT_HEADER = '.project-header'; export const AGOR_TITLE = '.agor-title'; // ── Status Bar ── export const STATUS_BAR = '[data-testid="status-bar"]'; export const STATUS_BAR_CLASS = '.status-bar'; export const STATUS_BAR_VERSION = '.status-bar .version'; export const BURN_RATE = '.burn-rate'; export const AGENT_COUNTS = '.agent-counts'; export const ATTENTION_QUEUE = '.attention-queue'; export const FLEET_TOKENS = '.fleet-tokens'; export const FLEET_COST = '.fleet-cost'; export const PROJECT_COUNT = '.project-count'; // ── Settings ── export const SETTINGS_DRAWER = '.settings-drawer'; export const SETTINGS_TAB = '.settings-tab'; export const SETTINGS_TAB_ACTIVE = '.settings-tab.active'; export const SETTINGS_CLOSE = '.settings-close'; export const SETTINGS_CAT_BTN = '.cat-btn'; export const THEME_SECTION = '.theme-section'; export const FONT_STEPPER = '.font-stepper'; export const FONT_DROPDOWN = '.font-dropdown'; export const STEP_UP = '.font-stepper .step-up'; export const SIZE_VALUE = '.font-stepper .size-value'; export const UPDATE_ROW = '.update-row'; export const VERSION_LABEL = '.version-label'; // ── Terminal ── export const TERMINAL_SECTION = '.terminal-section'; export const TERMINAL_TABS = '.terminal-tabs'; export const TERMINAL_TAB = '.terminal-tab'; export const TERMINAL_TAB_ACTIVE = '.terminal-tab.active'; export const TAB_ADD_BTN = '.tab-add-btn'; export const TAB_CLOSE = '.tab-close'; export const TERMINAL_COLLAPSE_BTN = '.terminal-collapse-btn'; export const XTERM = '.xterm'; export const XTERM_TEXTAREA = '.xterm-helper-textarea'; // ── Agent ── export const CHAT_INPUT = '.chat-input'; export const CHAT_INPUT_TEXTAREA = '.chat-input textarea'; export const CHAT_INPUT_ALT = '.chat-input input'; export const SEND_BTN = '.send-btn'; export const AGENT_MESSAGES = '.agent-messages'; export const AGENT_STATUS = '.agent-status'; export const AGENT_STATUS_TEXT = '.agent-status .status-text'; export const PROVIDER_BADGE = '.provider-badge'; export const AGENT_COST = '.agent-cost'; export const MODEL_LABEL = '.model-label'; export const STOP_BTN = '.stop-btn'; // ── Search Overlay ── export const OVERLAY_BACKDROP = '.overlay-backdrop'; export const OVERLAY_PANEL = '.overlay-panel'; export const SEARCH_INPUT = '.search-input'; export const NO_RESULTS = '.no-results'; export const ESC_HINT = '.esc-hint'; export const LOADING_DOT = '.loading-dot'; export const RESULTS_LIST = '.results-list'; export const GROUP_LABEL = '.group-label'; // ── Command Palette ── export const PALETTE_BACKDROP = '.palette-backdrop'; export const PALETTE_PANEL = '.palette-panel'; export const PALETTE_INPUT = '.palette-input'; export const PALETTE_ITEM = '.palette-item'; export const CMD_LABEL = '.cmd-label'; export const CMD_SHORTCUT = '.cmd-shortcut'; // ── File Browser ── export const FILE_BROWSER = '.file-browser'; export const FB_TREE = '.fb-tree'; export const FB_VIEWER = '.fb-viewer'; export const FB_DIR = '.fb-dir'; export const FB_FILE = '.fb-file'; export const FB_EMPTY = '.fb-empty'; export const FB_CHEVRON = '.fb-chevron'; export const FB_EDITOR_HEADER = '.fb-editor-header'; export const FB_IMAGE_WRAP = '.fb-image-wrap'; export const FB_ERROR = '.fb-error'; export const FILE_TYPE = '.file-type'; // ── Communications ── export const COMMS_TAB = '.comms-tab'; export const COMMS_MODE_BAR = '.comms-mode-bar'; export const MODE_BTN = '.mode-btn'; export const MODE_BTN_ACTIVE = '.mode-btn.active'; export const COMMS_SIDEBAR = '.comms-sidebar'; export const CH_HASH = '.ch-hash'; export const COMMS_MESSAGES = '.comms-messages'; export const MSG_INPUT_BAR = '.msg-input-bar'; export const MSG_SEND_BTN = '.msg-send-btn'; // ── Task Board ── export const TASK_BOARD = '.task-board'; export const TB_TITLE = '.tb-title'; export const TB_COLUMN = '.tb-column'; export const TB_COL_LABEL = '.tb-col-label'; export const TB_COL_COUNT = '.tb-col-count'; export const TB_ADD_BTN = '.tb-add-btn'; export const TB_CREATE_FORM = '.tb-create-form'; export const TB_COUNT = '.tb-count'; // ── Theme ── export const DD_BTN = '.dd-btn'; export const DD_LIST = '.dd-list'; export const DD_GROUP_LABEL = '.dd-group-label'; export const DD_ITEM = '.dd-item'; export const DD_ITEM_SELECTED = '.dd-item.selected'; export const SIZE_STEPPER = '.size-stepper'; export const THEME_ACTION_BTN = '.theme-action-btn'; // ── Notifications ── export const NOTIF_BTN = '.notif-btn'; export const NOTIF_DRAWER = '.notif-drawer'; export const DRAWER_TITLE = '.drawer-title'; export const CLEAR_BTN = '.clear-btn'; export const NOTIF_EMPTY = '.notif-empty'; export const NOTIF_ITEM = '.notif-item'; export const NOTIF_BACKDROP = '.notif-backdrop'; // ── Splash ── export const SPLASH = '.splash'; export const LOGO_TEXT = '.logo-text'; export const SPLASH_VERSION = '.splash .version'; export const SPLASH_DOT = '.splash .dot'; // ── Diagnostics ── export const DIAGNOSTICS = '.diagnostics'; export const DIAG_HEADING = '.diagnostics .sh'; export const DIAG_KEY = '.diag-key'; export const DIAG_LABEL = '.diag-label'; export const DIAG_FOOTER = '.diag-footer'; export const REFRESH_BTN = '.refresh-btn'; // ── Right Bar (Electrobun) ── export const RIGHT_BAR = '.right-bar'; export const CLOSE_BTN = '.close-btn'; // ── Context Tab ── export const CONTEXT_TAB = '.context-tab'; export const TOKEN_METER = '.token-meter'; export const FILE_REFS = '.file-refs'; export const TURN_COUNT = '.turn-count'; // ── Worktree ── export const CLONE_BTN = '.clone-btn'; export const BRANCH_DIALOG = '.branch-dialog'; export const WT_BADGE = '.wt-badge'; export const CLONE_GROUP = '.clone-group'; // ── Toast / Errors ── export const TOAST_ERROR = '.toast-error'; export const LOAD_ERROR = '.load-error';