Skip to content

Commit fc22ed8

Browse files
committed
added improved browserstack config
1 parent cbd3757 commit fc22ed8

7 files changed

Lines changed: 45 additions & 247 deletions

File tree

.github/workflows/browserstack-tests.yml

Lines changed: 26 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,6 @@ jobs:
1111
browserstack-tests:
1212
runs-on: ubuntu-latest
1313

14-
strategy:
15-
fail-fast: false
16-
matrix:
17-
# Test in smaller batches to avoid overwhelming BrowserStack
18-
batch: [1, 2, 3]
19-
2014
steps:
2115
- name: Checkout code
2216
uses: actions/checkout@v4
@@ -54,41 +48,32 @@ jobs:
5448
- name: Build application
5549
run: pnpm run build
5650

57-
- name: Start application server
51+
- name: Verify deployed app accessibility
5852
run: |
59-
pnpm run preview &
60-
# Wait for server to be ready
61-
npx wait-on http://localhost:4173 --timeout 60000
62-
env:
63-
CI: true
53+
# Test that the deployed app is accessible
54+
curl -I https://simple-todo.le-space.de || {
55+
echo "Warning: Deployed app not accessible"
56+
exit 1
57+
}
58+
59+
- name: Setup BrowserStack Environment
60+
uses: browserstack/github-actions/setup-env@master
61+
with:
62+
username: ${{ secrets.BROWSERSTACK_USERNAME }}
63+
access-key: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
64+
build-name: "simple-todo-consent-${{ github.sha }}"
65+
project-name: "Simple Todo Consent Screen Tests"
6466

65-
- name: Run BrowserStack tests - Batch ${{ matrix.batch }}
66-
run: |
67-
case ${{ matrix.batch }} in
68-
1)
69-
# Desktop browsers - Windows & Linux
70-
pnpm run test:browserstack -- --project="Chrome Windows" --project="Firefox Windows" --project="Edge Windows" --project="Chrome Linux"
71-
;;
72-
2)
73-
# Desktop browsers - macOS & Opera
74-
pnpm run test:browserstack -- --project="Chrome macOS" --project="Firefox macOS" --project="Safari macOS" --project="Opera Windows"
75-
;;
76-
3)
77-
# Mobile browsers
78-
pnpm run test:browserstack -- --project="iPhone Safari" --project="Android Chrome"
79-
;;
80-
esac
67+
- name: Run Playwright Tests on BrowserStack
68+
run: pnpm exec playwright test --config=playwright.browserstack.config.js
8169
env:
82-
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
83-
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
84-
BROWSERSTACK_BUILD_NAME: "simple-todo-consent-${{ github.sha }}-batch-${{ matrix.batch }}"
8570
CI: true
8671

8772
- name: Upload test results
8873
uses: actions/upload-artifact@v4
8974
if: always()
9075
with:
91-
name: browserstack-results-batch-${{ matrix.batch }}
76+
name: browserstack-results
9277
path: |
9378
test-results/
9479
playwright-report/
@@ -98,7 +83,7 @@ jobs:
9883
uses: actions/upload-artifact@v4
9984
if: always()
10085
with:
101-
name: playwright-report-batch-${{ matrix.batch }}
86+
name: playwright-report
10287
path: playwright-report/
10388
retention-days: 30
10489

@@ -176,13 +161,11 @@ jobs:
176161
echo "" >> $GITHUB_STEP_SUMMARY
177162
echo "## BrowserStack Tests" >> $GITHUB_STEP_SUMMARY
178163
179-
for batch in 1 2 3; do
180-
if [ -d "all-results/browserstack-results-batch-$batch" ]; then
181-
echo "- ✅ Batch $batch completed" >> $GITHUB_STEP_SUMMARY
182-
else
183-
echo "- ❌ Batch $batch failed or not found" >> $GITHUB_STEP_SUMMARY
184-
fi
185-
done
164+
if [ -d "all-results/browserstack-results" ]; then
165+
echo "- ✅ BrowserStack tests completed" >> $GITHUB_STEP_SUMMARY
166+
else
167+
echo "- ❌ BrowserStack tests failed or not found" >> $GITHUB_STEP_SUMMARY
168+
fi
186169
187170
echo "" >> $GITHUB_STEP_SUMMARY
188171
echo "## Local Tests" >> $GITHUB_STEP_SUMMARY
@@ -193,12 +176,11 @@ jobs:
193176
fi
194177
195178
echo "" >> $GITHUB_STEP_SUMMARY
196-
echo "## Tested Browsers" >> $GITHUB_STEP_SUMMARY
197-
echo "- Chrome on Windows 11, macOS Monterey, Linux Ubuntu 20.04" >> $GITHUB_STEP_SUMMARY
179+
echo "## Tested Browsers (BrowserStack)" >> $GITHUB_STEP_SUMMARY
180+
echo "- Chrome on Windows 11, macOS Monterey" >> $GITHUB_STEP_SUMMARY
198181
echo "- Firefox on Windows 11, macOS Monterey" >> $GITHUB_STEP_SUMMARY
199182
echo "- Edge on Windows 11" >> $GITHUB_STEP_SUMMARY
200-
echo "- Opera on Windows 11" >> $GITHUB_STEP_SUMMARY
201183
echo "- Safari on macOS Monterey, iPhone 14" >> $GITHUB_STEP_SUMMARY
202184
echo "- Chrome on Android (Samsung Galaxy S22)" >> $GITHUB_STEP_SUMMARY
203185
echo "" >> $GITHUB_STEP_SUMMARY
204-
echo "**Note**: Brave browser testing requires local setup as it's not available on standard BrowserStack plans."
186+
echo "**Note**: All browsers are tested in parallel as defined in browserstack.yml"

BROWSERSTACK_COMPARISON.md

Lines changed: 0 additions & 179 deletions
This file was deleted.

browserstack.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,10 @@ platforms:
1919
osVersion: 11
2020
browserName: chrome
2121
browserVersion: latest
22+
# Add explicit channel specification
2223
- os: Windows
2324
osVersion: 11
24-
browserName: playwright-firefox
25+
browserName: firefox # Changed from playwright-firefox
2526
browserVersion: latest
2627
- os: Windows
2728
osVersion: 11
@@ -33,11 +34,11 @@ platforms:
3334
browserVersion: latest
3435
- os: OS X
3536
osVersion: Monterey
36-
browserName: playwright-firefox
37+
browserName: firefox # Changed from playwright-firefox
3738
browserVersion: latest
3839
- os: OS X
3940
osVersion: Monterey
40-
browserName: playwright-webkit
41+
browserName: safari # Changed from playwright-webkit
4142
browserVersion: latest
4243
# Linux platform removed - not supported by BrowserStack with Playwright
4344
- osVersion: 12.0

e2e/consent-screen.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ async function getActiveBrowserStackSessions() {
3131
}
3232

3333
test.describe('Consent Screen', () => {
34-
test('should display consent modal and allow proceeding after checking all boxes', async ({ page }) => {
34+
test.only('should display consent modal and allow proceeding after checking all boxes', async ({ page }) => {
3535
// Navigate to the app - use deployed URL for BrowserStack, baseURL for local
3636
const testUrl = process.env.BROWSERSTACK_BUILD_NAME ? 'https://simple-todo.le-space.de' : '/';
3737
await page.goto(testUrl);

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,16 @@
1515
"test:unit": "vitest",
1616
"test": "pnpm run test:unit -- --run && pnpm run test:e2e",
1717
"test:e2e": "playwright test",
18-
"test:browserstack": "npx browserstack-node-sdk playwright test --config=playwright.browserstack.config.js",
19-
"test:browserstack:tunnel": "node scripts/browserstack-local.js start & sleep 5 && npx browserstack-node-sdk playwright test --config=playwright.browserstack.config.js; pkill -f browserstack-local",
18+
"test:browserstack": "pnpm exec browserstack-node-sdk playwright test --config=playwright.browserstack.config.js",
19+
"test:browserstack:tunnel": "node scripts/browserstack-local.js start & sleep 5 && pnpm exec browserstack-node-sdk playwright test --config=playwright.browserstack.config.js; pkill -f browserstack-local",
2020
"test:browserstack:local": "node scripts/browserstack-local.js start",
2121
"test:consent": "playwright test e2e/consent-screen.spec.js",
22-
"test:consent:browserstack": "npx browserstack-node-sdk playwright test e2e/consent-screen.spec.js --config=playwright.browserstack.config.js"
22+
"test:consent:browserstack": "pnpm exec browserstack-node-sdk playwright test e2e/consent-screen.spec.js --config=playwright.browserstack.config.js"
2323
},
2424
"devDependencies": {
2525
"@eslint/compat": "^1.2.5",
2626
"@eslint/js": "^9.18.0",
27-
"@playwright/test": "^1.49.1",
27+
"@playwright/test": "^1.53.0",
2828
"@sveltejs/adapter-static": "^3.0.8",
2929
"@sveltejs/kit": "^2.22.0",
3030
"@sveltejs/vite-plugin-svelte": "^6.0.0",
@@ -33,7 +33,7 @@
3333
"@tailwindcss/vite": "^4.0.0",
3434
"@vitest/browser": "^3.2.3",
3535
"browserstack-local": "^1.5.8",
36-
"browserstack-node-sdk": "^1.41.1",
36+
"browserstack-node-sdk": "1.41.1",
3737
"dotenv": "^17.2.1",
3838
"eslint": "^9.18.0",
3939
"eslint-config-prettier": "^10.0.1",

playwright.browserstack.config.js

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,6 @@ export default defineConfig({
1717
trace: 'on-first-retry'
1818
},
1919

20-
// Simple project config - SDK handles browser capabilities
21-
projects: [
22-
{
23-
name: 'browserstack',
24-
use: {
25-
// BrowserStack SDK will inject all the browser-specific capabilities
26-
// No need to define browserstack.* capabilities here
27-
},
28-
},
29-
],
20+
// BrowserStack SDK handles browser selection via browserstack.yml
21+
// No projects needed here
3022
});

0 commit comments

Comments
 (0)