feat: add legacy storage key cleanup functionality #2563
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: sdk/browser | |
| on: | |
| push: | |
| branches: [main, 'feat/**'] | |
| paths-ignore: | |
| - '**.md' #Do not need to run CI for markdown changes. | |
| pull_request: | |
| branches: [main, 'feat/**'] | |
| paths-ignore: | |
| - '**.md' | |
| jobs: | |
| build-test-browser: | |
| permissions: | |
| pull-requests: write | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| # Node versions to run on. | |
| version: [18, 21] | |
| steps: | |
| - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 | |
| - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 | |
| with: | |
| node-version: ${{ matrix.version }} | |
| registry-url: 'https://registry.npmjs.org' | |
| - id: shared | |
| name: Shared CI Steps | |
| uses: ./actions/ci | |
| with: | |
| workspace_name: '@launchdarkly/js-client-sdk' | |
| workspace_path: packages/sdk/browser | |
| - name: Check package size | |
| if: github.event_name == 'pull_request' && matrix.version == '21' | |
| uses: ./actions/package-size | |
| with: | |
| github_token: ${{ secrets.GITHUB_TOKEN }} | |
| target_file: 'packages/sdk/browser/dist/index.js' | |
| package_name: '@launchdarkly/js-client-sdk' | |
| pr_number: ${{ github.event.number }} | |
| size_limit: 25000 | |
| # Contract Tests | |
| - name: Install contract test dependencies | |
| run: yarn workspaces focus browser-contract-test-adapter browser-contract-test-service | |
| - name: Install Playwright browsers | |
| run: yarn workspace browser-contract-test-service install-playwright-browsers | |
| - name: Build contract test adapter | |
| run: yarn workspace browser-contract-test-adapter run build | |
| - name: Build contract test entity (browser app) | |
| run: yarn workspace browser-contract-test-service run build | |
| - name: Start contract test adapter in background | |
| run: | | |
| yarn workspace browser-contract-test-adapter run start > /tmp/adapter.log 2>&1 & | |
| echo $! > /tmp/adapter.pid | |
| - name: Serve browser app with http-server | |
| run: | | |
| npx http-server packages/sdk/browser/contract-tests/entity/dist -p 5173 --cors > /tmp/http-server.log 2>&1 & | |
| echo $! > /tmp/http-server.pid | |
| - name: Wait for services to be ready | |
| run: | | |
| echo "Waiting for adapter on port 8001..." | |
| for i in {1..30}; do | |
| if nc -z localhost 8001; then | |
| echo "Adapter WebSocket ready" | |
| break | |
| fi | |
| if [ $i -eq 30 ]; then | |
| echo "Timeout waiting for adapter" | |
| cat /tmp/adapter.log | |
| exit 1 | |
| fi | |
| sleep 1 | |
| done | |
| echo "Waiting for HTTP server on port 5173..." | |
| for i in {1..30}; do | |
| if curl -s http://localhost:5173 > /dev/null; then | |
| echo "HTTP server ready" | |
| break | |
| fi | |
| if [ $i -eq 30 ]; then | |
| echo "Timeout waiting for HTTP server" | |
| cat /tmp/http-server.log | |
| exit 1 | |
| fi | |
| sleep 1 | |
| done | |
| - name: Open browser app in headless Chromium | |
| run: | | |
| node packages/sdk/browser/contract-tests/entity/open-browser.mjs http://localhost:5173 > /tmp/playwright.log 2>&1 & | |
| echo $! > /tmp/playwright.pid | |
| sleep 5 # Give the browser time to initialize and connect via WebSocket | |
| - name: Run contract tests | |
| uses: launchdarkly/gh-actions/actions/contract-tests@68e9b2f165f60934308f18e4b75623c30b905c38 | |
| with: | |
| test_service_port: 8000 | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| extra_params: '--skip-from=${{ github.workspace }}/packages/sdk/browser/contract-tests/suppressions.txt --stop-service-at-end' | |
| - name: Print logs on failure | |
| if: failure() | |
| run: | | |
| echo "=== Adapter Log ===" | |
| cat /tmp/adapter.log || echo "No adapter log" | |
| echo "=== HTTP Server Log ===" | |
| cat /tmp/http-server.log || echo "No http-server log" | |
| echo "=== Playwright Log ===" | |
| cat /tmp/playwright.log || echo "No playwright log" | |
| - name: Cleanup contract test services | |
| if: always() | |
| run: | | |
| [ -f /tmp/playwright.pid ] && kill $(cat /tmp/playwright.pid) || true | |
| [ -f /tmp/http-server.pid ] && kill $(cat /tmp/http-server.pid) || true | |
| [ -f /tmp/adapter.pid ] && kill $(cat /tmp/adapter.pid) || true | |
| pkill -f "playwright" || true | |
| pkill -f "http-server" || true | |
| pkill -f "browser-contract-test-adapter" || true |