mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-01-31 06:42:03 +00:00
- Modified tests to navigate directly to the dashboard instead of the welcome view, ensuring a smoother project selection process. - Updated project name verification to check against the sidebar button instead of multiple elements. - Added logic to expand the sidebar if collapsed, improving visibility for project names during tests. - Adjusted test assertions to reflect changes in the UI structure, including the introduction of the dashboard view.
175 lines
5.2 KiB
TypeScript
175 lines
5.2 KiB
TypeScript
/**
|
|
* Centralized constants for test utilities
|
|
* This file contains all shared constants like URLs, timeouts, and selectors
|
|
*/
|
|
|
|
// ============================================================================
|
|
// API Configuration
|
|
// ============================================================================
|
|
|
|
/**
|
|
* Base URL for the API server
|
|
*/
|
|
export const API_BASE_URL = 'http://localhost:3008';
|
|
|
|
/**
|
|
* API endpoints for worktree operations
|
|
*/
|
|
export const API_ENDPOINTS = {
|
|
worktree: {
|
|
create: `${API_BASE_URL}/api/worktree/create`,
|
|
delete: `${API_BASE_URL}/api/worktree/delete`,
|
|
list: `${API_BASE_URL}/api/worktree/list`,
|
|
commit: `${API_BASE_URL}/api/worktree/commit`,
|
|
switchBranch: `${API_BASE_URL}/api/worktree/switch-branch`,
|
|
listBranches: `${API_BASE_URL}/api/worktree/list-branches`,
|
|
status: `${API_BASE_URL}/api/worktree/status`,
|
|
info: `${API_BASE_URL}/api/worktree/info`,
|
|
},
|
|
fs: {
|
|
browse: `${API_BASE_URL}/api/fs/browse`,
|
|
read: `${API_BASE_URL}/api/fs/read`,
|
|
write: `${API_BASE_URL}/api/fs/write`,
|
|
},
|
|
features: {
|
|
list: `${API_BASE_URL}/api/features/list`,
|
|
create: `${API_BASE_URL}/api/features/create`,
|
|
update: `${API_BASE_URL}/api/features/update`,
|
|
delete: `${API_BASE_URL}/api/features/delete`,
|
|
},
|
|
} as const;
|
|
|
|
// ============================================================================
|
|
// Timeout Configuration
|
|
// ============================================================================
|
|
|
|
/**
|
|
* Default timeouts in milliseconds
|
|
*/
|
|
export const TIMEOUTS = {
|
|
/** Default timeout for element visibility checks */
|
|
default: 5000,
|
|
/** Short timeout for quick checks */
|
|
short: 2000,
|
|
/** Medium timeout for standard operations */
|
|
medium: 10000,
|
|
/** Long timeout for slow operations */
|
|
long: 30000,
|
|
/** Extra long timeout for very slow operations */
|
|
extraLong: 60000,
|
|
/** Timeout for animations to complete */
|
|
animation: 300,
|
|
/** Small delay for UI to settle */
|
|
settle: 500,
|
|
/** Delay for network operations */
|
|
network: 1000,
|
|
} as const;
|
|
|
|
// ============================================================================
|
|
// Test ID Selectors
|
|
// ============================================================================
|
|
|
|
/**
|
|
* Common data-testid selectors organized by component/view
|
|
*/
|
|
export const TEST_IDS = {
|
|
// Sidebar & Navigation
|
|
sidebar: 'sidebar',
|
|
navBoard: 'nav-board',
|
|
navSpec: 'nav-spec',
|
|
navContext: 'nav-context',
|
|
navAgent: 'nav-agent',
|
|
settingsButton: 'settings-button',
|
|
openProjectButton: 'open-project-button',
|
|
|
|
// Views
|
|
boardView: 'board-view',
|
|
specView: 'spec-view',
|
|
contextView: 'context-view',
|
|
agentView: 'agent-view',
|
|
settingsView: 'settings-view',
|
|
welcomeView: 'welcome-view',
|
|
dashboardView: 'dashboard-view',
|
|
setupView: 'setup-view',
|
|
|
|
// Board View Components
|
|
addFeatureButton: 'add-feature-button',
|
|
addFeatureDialog: 'add-feature-dialog',
|
|
confirmAddFeature: 'confirm-add-feature',
|
|
featureBranchInput: 'feature-input',
|
|
featureCategoryInput: 'feature-category-input',
|
|
worktreeSelector: 'worktree-selector',
|
|
|
|
// Spec Editor
|
|
specEditor: 'spec-editor',
|
|
|
|
// File Browser Dialog
|
|
pathInput: 'path-input',
|
|
goToPathButton: 'go-to-path-button',
|
|
|
|
// Context View
|
|
contextFileList: 'context-file-list',
|
|
addContextButton: 'add-context-button',
|
|
} as const;
|
|
|
|
// ============================================================================
|
|
// CSS Selectors
|
|
// ============================================================================
|
|
|
|
/**
|
|
* Common CSS selectors for elements that don't have data-testid
|
|
*/
|
|
export const CSS_SELECTORS = {
|
|
/** CodeMirror editor content area */
|
|
codeMirrorContent: '.cm-content',
|
|
/** Dialog elements */
|
|
dialog: '[role="dialog"]',
|
|
/** Sonner toast notifications */
|
|
toast: '[data-sonner-toast]',
|
|
toastError: '[data-sonner-toast][data-type="error"]',
|
|
toastSuccess: '[data-sonner-toast][data-type="success"]',
|
|
/** Command/combobox input (shadcn-ui cmdk) */
|
|
commandInput: '[cmdk-input]',
|
|
/** Radix dialog overlay */
|
|
dialogOverlay: '[data-radix-dialog-overlay]',
|
|
} as const;
|
|
|
|
// ============================================================================
|
|
// Storage Keys
|
|
// ============================================================================
|
|
|
|
/**
|
|
* localStorage keys used by the application
|
|
*/
|
|
export const STORAGE_KEYS = {
|
|
appStorage: 'automaker-storage',
|
|
setupStorage: 'automaker-setup',
|
|
} as const;
|
|
|
|
// ============================================================================
|
|
// Branch Name Utilities
|
|
// ============================================================================
|
|
|
|
/**
|
|
* Sanitize a branch name to create a valid worktree directory name
|
|
* @param branchName - The branch name to sanitize
|
|
* @returns Sanitized name suitable for directory paths
|
|
*/
|
|
export function sanitizeBranchName(branchName: string): string {
|
|
return branchName.replace(/[^a-zA-Z0-9_-]/g, '-');
|
|
}
|
|
|
|
// ============================================================================
|
|
// Default Values
|
|
// ============================================================================
|
|
|
|
/**
|
|
* Default values used in test setup
|
|
*/
|
|
export const DEFAULTS = {
|
|
projectName: 'Test Project',
|
|
projectPath: '/mock/test-project',
|
|
theme: 'dark' as const,
|
|
maxConcurrency: 3,
|
|
} as const;
|