- Increase Swift test timeout from 10 to 15 minutes - Switch from exclusion list to inclusion list for more control - Run only core test suites that are stable and fast: - ImageCommandTests (including new analyze tests) - ImageAnalyzeIntegrationTests - ConfigCommandTests, ListCommandTests, VersionTests - ModelsTests, JSONOutputTests, ErrorHandlingTests - FileHandlingTests, ConfigurationTests - Exclude potentially flaky or slow tests: - AI provider tests with network calls - Utility tests with Thread.sleep - Screenshot and window manager tests requiring permissions This focused approach ensures CI runs reliably while still testing the core functionality including the new image analyze feature.
97 lines
2.2 KiB
YAML
97 lines
2.2 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [ main ]
|
|
pull_request:
|
|
branches: [ main ]
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: macos-15
|
|
|
|
strategy:
|
|
matrix:
|
|
node-version: [20.x, 22.x]
|
|
|
|
env:
|
|
DEVELOPER_DIR: /Applications/Xcode_16.3.app/Contents/Developer
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Xcode
|
|
run: |
|
|
sudo xcode-select -s $DEVELOPER_DIR
|
|
xcodebuild -version
|
|
swift --version
|
|
|
|
- name: Build Swift CLI for tests
|
|
run: |
|
|
cd peekaboo-cli
|
|
swift build -c release
|
|
# Copy the binary to the expected location
|
|
cp .build/release/peekaboo ../peekaboo
|
|
cd ..
|
|
# Make it executable
|
|
chmod +x peekaboo
|
|
# Verify it exists
|
|
ls -la peekaboo
|
|
|
|
- name: Use Node.js ${{ matrix.node-version }}
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
cache: 'npm'
|
|
|
|
- name: Install dependencies
|
|
run: npm ci
|
|
|
|
- name: Build TypeScript
|
|
run: npm run build
|
|
|
|
- name: Run linter
|
|
run: npm run lint --if-present
|
|
|
|
- name: Run tests with coverage
|
|
run: npm run test:coverage
|
|
env:
|
|
CI: true
|
|
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@v4
|
|
if: matrix.node-version == '20.x'
|
|
with:
|
|
file: ./coverage/lcov.info
|
|
flags: unittests
|
|
name: codecov-umbrella
|
|
fail_ci_if_error: false
|
|
|
|
build-swift:
|
|
runs-on: macos-15
|
|
timeout-minutes: 30
|
|
|
|
env:
|
|
DEVELOPER_DIR: /Applications/Xcode_16.3.app/Contents/Developer
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Xcode
|
|
run: |
|
|
sudo xcode-select -s $DEVELOPER_DIR
|
|
xcodebuild -version
|
|
swift --version
|
|
|
|
- name: Build Swift CLI
|
|
run: |
|
|
cd peekaboo-cli
|
|
swift build -c release
|
|
|
|
- name: Run Swift tests
|
|
timeout-minutes: 15
|
|
run: |
|
|
cd peekaboo-cli
|
|
swift test --parallel --filter "ImageCommandTests|ImageAnalyzeIntegrationTests|ConfigCommandTests|ListCommandTests|VersionTests|ModelsTests|JSONOutputTests|ErrorHandlingTests|FileHandlingTests|ConfigurationTests"
|
|
env:
|
|
CI: true |