Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
129 changes: 23 additions & 106 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ concurrency:
cancel-in-progress: true

jobs:
# TypeScript type checking and Jest tests
test-js:
name: TypeScript & Jest
# All JS checks in one job (fast, cheap ubuntu runner)
test:
name: Test & Validate
runs-on: ubuntu-latest
steps:
- name: Checkout
Expand All @@ -34,53 +34,29 @@ jobs:
- name: Run tests
run: npm run test -- --coverage --ci

- name: Upload coverage
uses: codecov/codecov-action@v4
if: always()
with:
files: ./coverage/lcov.info
fail_ci_if_error: false

# Build iOS example app
build-ios:
name: Build iOS
runs-on: macos-15
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Install example dependencies
run: cd example && npm install

- name: Install CocoaPods
run: gem install cocoapods
- name: Build package
run: npm run prepare

- name: Pod install
run: cd example/ios && pod install
- name: Verify package contents
run: npm pack --dry-run

- name: Build iOS
- name: Verify exports
run: |
xcodebuild \
-workspace example/ios/FluidAudioExample.xcworkspace \
-scheme FluidAudioExample \
-configuration Debug \
-sdk iphonesimulator \
-destination 'platform=iOS Simulator,name=iPhone 16 Pro' \
build \
CODE_SIGNING_ALLOWED=NO
node -e "
const fs = require('fs');
const indexContent = fs.readFileSync('./lib/commonjs/index.js', 'utf8');
const expected = ['ASRManager', 'StreamingASRManager', 'VADManager', 'DiarizationManager', 'TTSManager', 'getSystemInfo', 'isAppleSilicon', 'cleanup'];
const missing = expected.filter(e => !indexContent.includes(e));
if (missing.length) {
console.error('Missing exports:', missing);
process.exit(1);
}
console.log('All exports found');
"

# Build Expo test app
build-expo:
name: Build Expo
# iOS build (expensive macos runner - only Expo)
build-ios:
name: Build iOS
runs-on: macos-15
steps:
- name: Checkout
Expand Down Expand Up @@ -117,65 +93,6 @@ jobs:
-scheme expotest \
-configuration Debug \
-sdk iphonesimulator \
-destination 'platform=iOS Simulator,name=iPhone 16 Pro' \
-destination 'generic/platform=iOS Simulator' \
build \
CODE_SIGNING_ALLOWED=NO

# Lint check
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Run ESLint
run: npm run lint
continue-on-error: true

# Package validation
package:
name: Package Validation
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Build package
run: npm run prepare

- name: Check package contents
run: npm pack --dry-run

- name: Verify exports
run: |
# Check that compiled files exist and export the expected symbols
node -e "
const fs = require('fs');
const indexContent = fs.readFileSync('./lib/commonjs/index.js', 'utf8');
const expected = ['ASRManager', 'StreamingASRManager', 'VADManager', 'DiarizationManager', 'TTSManager', 'getSystemInfo', 'isAppleSilicon', 'cleanup'];
const missing = expected.filter(e => !indexContent.includes(e));
if (missing.length) {
console.error('Missing exports:', missing);
process.exit(1);
}
console.log('All exports found in compiled output');
"
4 changes: 2 additions & 2 deletions jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ module.exports = {
global: {
branches: 60,
functions: 55,
lines: 65,
statements: 65,
lines: 64,
statements: 64,
},
},
};