Skip to content

Commit ab2e745

Browse files
authored
[MOB-12019] smoke test suite for inapp (#537)
1 parent da682b8 commit ab2e745

35 files changed

+2879
-15758
lines changed

.github/workflows/ci.yml

Lines changed: 19 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ jobs:
3636
e2e-tests:
3737
runs-on: ubuntu-latest
3838
timeout-minutes: 15
39+
container:
40+
image: mcr.microsoft.com/playwright:v1.56.1-jammy
41+
options: --user 1001
3942

4043
strategy:
4144
matrix:
@@ -62,117 +65,49 @@ jobs:
6265
${{ runner.os }}-react-deps-
6366
- name: Install React example dependencies
6467
working-directory: ./react-example
65-
run: |
66-
# Try frozen lockfile first, fallback to regeneration if corrupted
67-
yarn install --frozen-lockfile || {
68-
echo "Lockfile corrupted, regenerating..."
69-
rm yarn.lock
70-
yarn install
71-
}
72-
# Advanced browser caching strategy
73-
- name: Cache Playwright browsers
74-
uses: actions/cache@v4
75-
id: playwright-cache
76-
with:
77-
path: ~/.cache/ms-playwright
78-
key: ${{ runner.os }}-playwright-v2-${{ matrix.browser }}-${{ hashFiles('react-example/yarn.lock') }}
79-
restore-keys: |
80-
${{ runner.os }}-playwright-v2-${{ matrix.browser }}-
81-
${{ runner.os }}-playwright-${{ matrix.browser }}-
82-
${{ runner.os }}-playwright-v2-
83-
# Browser-specific installation strategy
68+
run: yarn install --frozen-lockfile
69+
8470
- name: Install Playwright browsers
8571
working-directory: ./react-example
8672
run: |
87-
echo "📥 Installing ${{ matrix.browser }} browser..."
88-
89-
# Smart installation based on browser type and cache status
90-
cache_hit="${{ steps.playwright-cache.outputs.cache-hit }}"
91-
92-
if [ "$cache_hit" = "true" ]; then
93-
echo "Cache hit: Installing browser only..."
94-
yarn playwright install ${{ matrix.browser }}
95-
elif [ "${{ matrix.browser }}" = "webkit" ]; then
96-
echo "Cache miss + WebKit: Installing with dependencies..."
97-
yarn playwright install ${{ matrix.browser }} --with-deps
98-
elif [ "${{ matrix.browser }}" = "firefox" ]; then
99-
echo "Cache miss + Firefox: Installing with dependencies..."
100-
yarn playwright install ${{ matrix.browser }} --with-deps
101-
else
102-
echo "Cache miss + Chromium: Installing browser only..."
103-
yarn playwright install ${{ matrix.browser }}
104-
fi
105-
# WebKit-specific dependency fix (Ubuntu 22.04 compatibility)
106-
- name: Fix WebKit dependencies
107-
if: matrix.browser == 'webkit'
108-
run: |
109-
echo "🔧 Applying WebKit Ubuntu 22.04 fixes..."
110-
sudo apt-get update -qq
111-
# Install the exact library versions WebKit needs
112-
sudo apt-get install -y libwoff2-1.1.0 libwoff2dec1 fonts-liberation || true
113-
echo "✅ WebKit dependencies updated"
114-
115-
# Browser environment setup (flags now handled by Playwright config)
116-
- name: Setup browser environment
117-
run: |
118-
echo "🚀 Browser environment configured via Playwright config"
119-
echo "✅ CI-optimized browser launch parameters will be applied automatically"
73+
echo "📥 Installing ${{ matrix.browser }} browser (dependencies already in Docker image)..."
74+
yarn playwright install ${{ matrix.browser }}
75+
echo "✅ Browser installed"
12076
- name: Create environment configuration
12177
working-directory: ./react-example
12278
run: |
12379
cat > .env << 'EOF'
124-
API_KEY=${{ secrets.ITERABLE_API_KEY }}
125-
JWT_SECRET=${{ secrets.JWT_SECRET }}
126-
USE_JWT=true
127-
JWT_GENERATOR=https://jwt-generator.stg-itbl.co/generate
80+
API_KEY=${{ secrets.ITERABLE_NO_JWT_API_KEY }}
81+
USE_JWT=false
12882
12983
EOF
13084
- name: Build React example app
13185
working-directory: ./react-example
13286
run: yarn build
133-
# Enhanced server startup with better resource management
13487
- name: Start React example server
13588
working-directory: ./react-example
13689
run: |
13790
echo "🚀 Starting React server..."
138-
139-
# Set Node.js memory limits for better stability
140-
export NODE_OPTIONS="--max-old-space-size=4096"
141-
142-
# Start server with optimized settings
14391
yarn webpack serve --config webpack.config.js --port 8080 --host 0.0.0.0 &
144-
SERVER_PID=$!
145-
echo "Server started with PID: $SERVER_PID"
14692
147-
# Enhanced health check with better error reporting
148-
for i in {1..20}; do
93+
# Wait for server to be ready
94+
for i in {1..30}; do
14995
if curl -f http://localhost:8080 >/dev/null 2>&1; then
150-
echo "✅ Server ready after ${i} attempts ($(($i*3)) seconds)"
96+
echo "✅ Server ready after ${i} attempts"
15197
break
15298
fi
153-
if [ $i -eq 20 ]; then
154-
echo "❌ Server startup failed after 60 seconds"
155-
echo "📋 Debug information:"
156-
ps aux | grep webpack || true
157-
netstat -tulpn | grep 8080 || true
158-
curl -v http://localhost:8080 || true
99+
if [ $i -eq 30 ]; then
100+
echo "❌ Server startup failed"
159101
exit 1
160102
fi
161-
sleep 3
162-
echo "Server startup attempt $i/20..."
103+
sleep 2
163104
done
164-
# Enhanced test execution with browser-specific optimizations
165105
- name: Run Playwright tests
166106
working-directory: ./react-example
167-
run: |
168-
yarn playwright test --project=${{ matrix.browser }}
107+
run: yarn playwright test --project=${{ matrix.browser }}
169108
env:
170109
CI: true
171-
# Browser-specific environment variables
172-
DISPLAY: :99 # Virtual display for browsers
173-
# WebKit library path configuration
174-
LD_LIBRARY_PATH: $HOME/.cache/ms-playwright/${{ matrix.browser }}-*/minibrowser-wpe/lib:$LD_LIBRARY_PATH
175-
# Enhanced artifact management
110+
176111
- name: Upload Playwright report
177112
uses: actions/upload-artifact@v4
178113
if: always()
@@ -188,7 +123,7 @@ jobs:
188123
name: test-results-${{ matrix.browser }}-${{ github.run_number }}
189124
path: react-example/test-results/
190125
retention-days: 7
191-
# Comprehensive cleanup with port management
126+
192127
- name: Cleanup server processes
193128
if: always()
194129
run: |

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@ results
1212
browserstack.json
1313
.DS_Store
1414
stats.json
15-
.idea
15+
.idea
16+
.cursor

0 commit comments

Comments
 (0)