@@ -91,11 +91,95 @@ jobs:
9191 key : node-modules-${{ hashFiles('package-lock.json') }}
9292 restore-keys : |
9393 node-modules-
94- - name : Install dependencies
95- run : npm install
9694 - name : Run tests
9795 env :
9896 CHROME_HEADLESS : 1
9997 CHROME_PATH : chrome
10098 CHROME_FLAGS : " --headless --disable-gpu --no-sandbox --enable-features=SharedArrayBuffer,CrossOriginIsolation"
101- run : npm test
99+ HEADERS : ' {"Cross-Origin-Opener-Policy":"same-origin","Cross-Origin-Embedder-Policy":"require-corp","Cross-Origin-Resource-Policy":"cross-origin","Origin-Agent-Cluster":"?1"}'
100+ run : |
101+ # Start test server with proper headers
102+ npm run serve -- --headers "${HEADERS}" &
103+
104+ # Increase wait time to ensure server is ready
105+ sleep 15
106+
107+ # Verify headers and isolation status
108+ echo "Checking security headers and isolation status..."
109+ curl -I http://localhost:3000/tests/ffmpeg-core-st.test.html
110+
111+ # Run verification script first
112+ echo "Verifying browser environment..."
113+ cat << EOF > verify-browser.html
114+ <!DOCTYPE html>
115+ <html>
116+ <head>
117+ <meta http-equiv="Cross-Origin-Opener-Policy" content="same-origin">
118+ <meta http-equiv="Cross-Origin-Embedder-Policy" content="require-corp">
119+ </head>
120+ <body>
121+ <script>
122+ console.log('SharedArrayBuffer available:', typeof SharedArrayBuffer !== 'undefined');
123+ console.log('crossOriginIsolated:', window.crossOriginIsolated);
124+ if (!window.crossOriginIsolated || typeof SharedArrayBuffer === 'undefined') {
125+ throw new Error('Browser environment not properly configured for SharedArrayBuffer');
126+ }
127+ </script>
128+ </body>
129+ </html>
130+ EOF
131+
132+ # Run single-threaded tests first
133+ echo "Running single-threaded tests..."
134+ npx mocha-headless-chrome \
135+ --args="$CHROME_FLAGS" \
136+ -a no-sandbox \
137+ -f http://localhost:3000/tests/ffmpeg-core-st.test.html 2>&1 | tee st-core-test.log
138+
139+ npx mocha-headless-chrome \
140+ --args="$CHROME_FLAGS" \
141+ -a no-sandbox \
142+ -f http://localhost:3000/tests/ffmpeg-st.test.html 2>&1 | tee st-test.log
143+
144+ # Run multi-threaded tests
145+ echo "Running multi-threaded tests..."
146+ # Create a test script to verify browser environment
147+ cat << EOF > verify-browser.html
148+ <!DOCTYPE html>
149+ <html>
150+ <head>
151+ <title>Browser Environment Test</title>
152+ </head>
153+ <body>
154+ <script>
155+ console.log('SharedArrayBuffer available:', typeof SharedArrayBuffer !== 'undefined');
156+ console.log('crossOriginIsolated:', window.crossOriginIsolated);
157+ </script>
158+ </body>
159+ </html>
160+ EOF
161+
162+ # Run the verification in Chrome
163+ echo "Verifying browser environment..."
164+ npx mocha-headless-chrome \
165+ --args="$CHROME_FLAGS --enable-features=SharedArrayBuffer,CrossOriginIsolation" \
166+ -a no-sandbox \
167+ -f http://localhost:3000/verify-browser.html
168+
169+ # Run MT tests with verified configuration
170+ npx mocha-headless-chrome \
171+ --args="$CHROME_FLAGS --enable-features=SharedArrayBuffer,CrossOriginIsolation" \
172+ -a no-sandbox \
173+ -f http://localhost:3000/tests/ffmpeg-core-mt.test.html 2>&1 | tee mt-core-test.log
174+
175+ npx mocha-headless-chrome \
176+ --args="$CHROME_FLAGS --enable-features=SharedArrayBuffer,CrossOriginIsolation" \
177+ -a no-sandbox \
178+ -f http://localhost:3000/tests/ffmpeg-mt.test.html 2>&1 | tee mt-test.log
179+
180+ # Display all logs for debugging
181+ echo "=== Test Logs ==="
182+ for log in *-test.log; do
183+ echo "Contents of $log:"
184+ cat $log
185+ done
0 commit comments