fix(e2e): close stale .cls editor before opening org-only virtual doc… #1597
Workflow file for this run
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: Apex Replay Debugger E2E (Playwright) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| vscode_version: | |
| description: 'VS Code version for E2E (e.g. 1.116.0). Empty uses repo variable | |
| PLAYWRIGHT_VSCODE_VERSION.' | |
| required: false | |
| type: string | |
| default: '' | |
| workflow_call: | |
| inputs: | |
| vscode_version: | |
| description: 'VS Code version for E2E (e.g. 1.116.0). Empty uses repo variable | |
| PLAYWRIGHT_VSCODE_VERSION.' | |
| required: false | |
| type: string | |
| default: '' | |
| push: | |
| branches-ignore: [ main, develop ] | |
| paths-ignore: | |
| - '.claude/**' | |
| - '.cursor/**' | |
| - 'contributing/**' | |
| - 'CONTRIBUTING.md' | |
| - 'docs/**' | |
| - '**/README*' | |
| - 'SECURITY*' | |
| - 'CODE_OF_CONDUCT*' | |
| - 'CHANGELOG*' | |
| - '**/CHANGELOG*' | |
| concurrency: | |
| group: ci-${{ github.ref }}-apexReplayDebuggerE2E | |
| cancel-in-progress: true | |
| jobs: | |
| e2e-desktop: | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 60 | |
| strategy: | |
| matrix: | |
| os: [ macos-latest, ubuntu-latest, windows-latest ] | |
| include: | |
| - os: ubuntu-latest | |
| test_runner_prefix: 'xvfb-run -a ' | |
| fail-fast: false | |
| env: | |
| MINIMAL_ORG_ALIAS: minimalTestOrg | |
| SFDX_AUTH_URL: ${{ secrets.SFDX_AUTH_URL_E2E }} | |
| VSCODE_DESKTOP: 1 | |
| E2E_FROM_VSIX: 1 | |
| # sf CLI hides authFields from `sf org create scratch --json` output by default; tests need them. | |
| SF_TEMP_SHOW_SECRETS: true | |
| PLAYWRIGHT_VSCODE_VERSION: ${{ github.event_name != 'push' && | |
| inputs.vscode_version != '' && inputs.vscode_version || | |
| vars.PLAYWRIGHT_VSCODE_VERSION }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - name: Log desktop VS Code version | |
| shell: bash | |
| run: echo "::notice::VS Code version=${PLAYWRIGHT_VSCODE_VERSION}" | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '22' | |
| cache: 'npm' | |
| - uses: google/wireit@setup-github-actions-caching/v2 | |
| - name: Install dependencies | |
| uses: salesforcecli/github-workflows/.github/actions/npmInstallWithRetries@main | |
| - name: Try E2E tests | |
| id: try-run | |
| continue-on-error: true | |
| timeout-minutes: 5 | |
| env: | |
| CI: 1 | |
| VSCODE_DESKTOP: 1 | |
| MINIMAL_ORG_ALIAS: minimalTestOrg | |
| E2E_NO_RETRIES: 1 | |
| run: | | |
| ${{ matrix.test_runner_prefix }}npm run test:desktop -w salesforcedx-vscode-apex-replay-debugger -- --reporter=html | |
| - name: Install Salesforce CLI | |
| if: steps.try-run.outcome == 'failure' | |
| uses: salesforcecli/github-workflows/.github/actions/retry@main | |
| with: | |
| max_attempts: 3 | |
| command: npm i -g @salesforce/cli | |
| retry_wait_seconds: 30 | |
| - name: Auth to dev hub (global) | |
| if: steps.try-run.outcome == 'failure' | |
| uses: salesforcecli/github-workflows/.github/actions/retry@main | |
| with: | |
| max_attempts: 3 | |
| command: bash -c 'echo "$SFDX_AUTH_URL" | sf org login sfdx-url | |
| --set-default-dev-hub --alias hub --sfdx-url-stdin' | |
| retry_wait_seconds: 30 | |
| - name: Install Playwright browsers and OS deps | |
| if: steps.try-run.outcome == 'failure' | |
| uses: salesforcecli/github-workflows/.github/actions/retry@main | |
| with: | |
| max_attempts: 3 | |
| command: npx playwright install chromium --with-deps | |
| retry_wait_seconds: 60 | |
| - name: Generate minimal project | |
| if: steps.try-run.outcome == 'failure' | |
| shell: bash | |
| run: sf project generate -n minimal-project | |
| - name: Create scratch org | |
| if: steps.try-run.outcome == 'failure' | |
| shell: bash | |
| run: | | |
| sf org create scratch -y 1 -d -f config/project-scratch-def.json -a "$MINIMAL_ORG_ALIAS" --json --wait 30 | |
| working-directory: minimal-project | |
| - name: Run Apex Replay Debugger E2E tests (parallel) | |
| if: steps.try-run.outcome == 'failure' | |
| id: parallel-run | |
| continue-on-error: true | |
| env: | |
| CI: 1 | |
| VSCODE_DESKTOP: 1 | |
| MINIMAL_ORG_ALIAS: minimalTestOrg | |
| run: | | |
| ${{ matrix.test_runner_prefix }}npm run test:desktop -w salesforcedx-vscode-apex-replay-debugger -- --reporter=html | |
| - name: Retry failed tests (sequential) | |
| if: steps.try-run.outcome == 'failure' && steps.parallel-run.outcome == | |
| 'failure' | |
| env: | |
| CI: 1 | |
| VSCODE_DESKTOP: 1 | |
| MINIMAL_ORG_ALIAS: minimalTestOrg | |
| PLAYWRIGHT_WORKERS: 1 | |
| run: | | |
| ${{ matrix.test_runner_prefix }}npm run test:desktop -w salesforcedx-vscode-apex-replay-debugger -- --last-failed --reporter=html | |
| - name: Copy span files to test-results | |
| if: always() | |
| shell: bash | |
| run: | | |
| mkdir -p packages/salesforcedx-vscode-apex-replay-debugger/test-results/spans | |
| cp -r ~/.sf/vscode-spans/. packages/salesforcedx-vscode-apex-replay-debugger/test-results/spans/ 2>/dev/null || true | |
| - name: Upload Playwright HTML report | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: playwright-report-apex-replay-debugger-desktop-${{ matrix.os }} | |
| path: packages/salesforcedx-vscode-apex-replay-debugger/playwright-report | |
| if-no-files-found: ignore | |
| - name: Upload Playwright Test Results | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: playwright-test-results-apex-replay-debugger-desktop-${{ matrix.os }} | |
| path: packages/salesforcedx-vscode-apex-replay-debugger/test-results | |
| if-no-files-found: ignore | |
| - name: Cleanup scratch org | |
| if: always() && steps.try-run.outcome == 'failure' | |
| continue-on-error: true | |
| shell: bash | |
| run: | | |
| sf org delete scratch -o "$MINIMAL_ORG_ALIAS" --no-prompt || true |