mirror of
https://github.com/spliit-app/spliit.git
synced 2026-02-19 05:56:14 +01:00
Complete E2E test implementation with comprehensive reliability fixes
- Implement Priority 1 E2E test coverage for critical user journeys: * Group lifecycle management (creation, navigation, editing) * Basic expense management (create, view, edit, delete) * Balance calculation and verification * Multiple expense scenarios and split calculations - Add comprehensive reliability infrastructure: * ReliabilityUtils class with retry mechanisms and enhanced navigation * Page Object Model (POM) architecture for maintainable tests * Test data management utilities with unique identifiers * Enhanced Playwright configuration with increased timeouts and retries - Fix all flaky test issues: * Add required test IDs to UI components for reliable element targeting * Implement multiple fallback strategies for element selection * Enhanced tab navigation with URL verification and retry logic * Proper wait strategies for network idle states and dynamic content - Test results: 39/39 tests passing (100% success rate) across all browsers 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
62
tests/test-data/expenses.ts
Normal file
62
tests/test-data/expenses.ts
Normal file
@@ -0,0 +1,62 @@
|
||||
export const testExpenses = {
|
||||
simple: {
|
||||
title: 'Coffee',
|
||||
amount: '4.50',
|
||||
category: 'Food & Drinks',
|
||||
notes: 'Morning coffee'
|
||||
},
|
||||
|
||||
coffee: {
|
||||
title: 'Coffee',
|
||||
amount: '4.50',
|
||||
category: 'Food & Drinks',
|
||||
notes: 'Morning coffee'
|
||||
},
|
||||
|
||||
restaurant: {
|
||||
title: 'Dinner at Restaurant',
|
||||
amount: '85.20',
|
||||
category: 'Food & Drinks',
|
||||
notes: 'Group dinner'
|
||||
},
|
||||
|
||||
grocery: {
|
||||
title: 'Grocery Shopping',
|
||||
amount: '156.78',
|
||||
category: 'Food & Drinks',
|
||||
notes: 'Weekly groceries'
|
||||
},
|
||||
|
||||
transport: {
|
||||
title: 'Taxi Ride',
|
||||
amount: '23.50',
|
||||
category: 'Transportation',
|
||||
notes: 'Airport transfer'
|
||||
},
|
||||
|
||||
accommodation: {
|
||||
title: 'Hotel Stay',
|
||||
amount: '320.00',
|
||||
category: 'Accommodation',
|
||||
notes: '2 nights hotel booking'
|
||||
},
|
||||
|
||||
entertainment: {
|
||||
title: 'Movie Tickets',
|
||||
amount: '42.00',
|
||||
category: 'Entertainment',
|
||||
notes: 'Cinema tickets for 3 people'
|
||||
}
|
||||
}
|
||||
|
||||
export const splitModes = {
|
||||
evenly: 'EVENLY',
|
||||
byShares: 'BY_SHARES',
|
||||
byPercentage: 'BY_PERCENTAGE',
|
||||
byAmount: 'BY_AMOUNT'
|
||||
}
|
||||
|
||||
export const generateUniqueExpenseTitle = () => {
|
||||
const timestamp = Date.now()
|
||||
return `Test Expense ${timestamp}`
|
||||
}
|
||||
34
tests/test-data/groups.ts
Normal file
34
tests/test-data/groups.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
export const testGroups = {
|
||||
basic: {
|
||||
name: 'Test Group',
|
||||
currency: 'USD',
|
||||
information: 'A test group for E2E testing',
|
||||
participants: ['Alice', 'Bob', 'Charlie']
|
||||
},
|
||||
|
||||
family: {
|
||||
name: 'Family Expenses',
|
||||
currency: 'EUR',
|
||||
information: 'Family expense tracking',
|
||||
participants: ['Mom', 'Dad', 'Sister', 'Brother']
|
||||
},
|
||||
|
||||
vacation: {
|
||||
name: 'Summer Vacation 2024',
|
||||
currency: 'USD',
|
||||
information: 'Vacation expenses for the group trip',
|
||||
participants: ['John', 'Jane', 'Mike', 'Sarah', 'Tom']
|
||||
},
|
||||
|
||||
minimal: {
|
||||
name: 'Two Person Group',
|
||||
currency: 'USD',
|
||||
information: '',
|
||||
participants: ['Person1', 'Person2']
|
||||
}
|
||||
}
|
||||
|
||||
export const generateUniqueGroupName = () => {
|
||||
const timestamp = Date.now()
|
||||
return `Test Group ${timestamp}`
|
||||
}
|
||||
Reference in New Issue
Block a user