diff --git a/.claude/skills/playwright-e2e/SKILL.md b/.claude/skills/playwright-e2e/SKILL.md index 65d9960b91..1cead813af 100644 --- a/.claude/skills/playwright-e2e/SKILL.md +++ b/.claude/skills/playwright-e2e/SKILL.md @@ -27,6 +27,13 @@ Shared code (helpers, locators, configuration) for tests. - **Default org in workspace** — pass `orgAlias: '…'` (e.g. `MINIMAL_ORG_ALIAS` / `DREAMHOUSE_ORG_ALIAS`) so `.sfdx/config.json` gets `target-org`. Omit `orgAlias` or use `undefined` for **no** `config.json` (no org). - **Multi-package directory, no org** — `multiPackageNoOrgDesktopTest` (extend `noOrgDesktopTest`); creates a temp workspace with `sfdx-project.json` listing multiple `packageDirectories` (`force-app`, `extra-pkg`). Use `multiPackageNoOrgTest` from `fixtures/index.ts` in test files. +**VSIX mode** (`useVsix` option): + +- `createDesktopTest({ useVsix: true })` — installs built VSIXs into a hash-keyed cache dir (`.vscode-test/ext-/`) and launches VS Code with `--extensions-dir` instead of `--extensionDevelopmentPath`. Exercises real shipping artifact (bundled `dist/`, `.vscodeignore`, `packageUpdates`). +- Default: `process.env.E2E_FROM_VSIX === '1'` — set in CI to enable without code changes. +- Requires `vscode:package` to have run first (produces `.vsix` in package dir). org-browser `test:desktop` depends on `vscode:package` for this reason. +- Idempotent across parallel workers: atomic rename; second worker skips if cache exists. + ## Span files (when debugging traces) Available local + CI/GHA. diff --git a/.github/workflows/apexLogE2E.yml b/.github/workflows/apexLogE2E.yml index 411782f3e5..7f572530f3 100644 --- a/.github/workflows/apexLogE2E.yml +++ b/.github/workflows/apexLogE2E.yml @@ -18,7 +18,7 @@ on: type: string default: '' push: - branches-ignore: [ main, develop ] + branches-ignore: [ main, develop, feature/W-21432332 ] # vsix-desktop-e2e rollout paths-ignore: - '.claude/**' - '.cursor/**' diff --git a/.github/workflows/apexReplayDebuggerE2E.yml b/.github/workflows/apexReplayDebuggerE2E.yml index 0e988e39ef..6d4de4292c 100644 --- a/.github/workflows/apexReplayDebuggerE2E.yml +++ b/.github/workflows/apexReplayDebuggerE2E.yml @@ -18,7 +18,7 @@ on: type: string default: '' push: - branches-ignore: [ main, develop ] + branches-ignore: [ main, develop, feature/W-21432332 ] # vsix-desktop-e2e rollout paths-ignore: - '.claude/**' - '.cursor/**' diff --git a/.github/workflows/apexTestingE2E.yml b/.github/workflows/apexTestingE2E.yml index 6dae3bad04..0a9492091b 100644 --- a/.github/workflows/apexTestingE2E.yml +++ b/.github/workflows/apexTestingE2E.yml @@ -18,7 +18,7 @@ on: type: string default: '' push: - branches-ignore: [ main, develop ] + branches-ignore: [ main, develop, feature/W-21432332 ] # vsix-desktop-e2e rollout paths-ignore: - '.claude/**' - '.cursor/**' diff --git a/.github/workflows/coreE2E.yml b/.github/workflows/coreE2E.yml index da77b220f8..376bd90ddf 100644 --- a/.github/workflows/coreE2E.yml +++ b/.github/workflows/coreE2E.yml @@ -18,7 +18,7 @@ on: type: string default: '' push: - branches-ignore: [ main, develop ] + branches-ignore: [ main, develop, feature/W-21432332 ] # vsix-desktop-e2e rollout paths-ignore: - '.claude/**' - '.cursor/**' diff --git a/.github/workflows/metadataE2E.yml b/.github/workflows/metadataE2E.yml index adb2786cea..fd57498d54 100644 --- a/.github/workflows/metadataE2E.yml +++ b/.github/workflows/metadataE2E.yml @@ -18,7 +18,7 @@ on: type: string default: '' push: - branches-ignore: [ main, develop ] + branches-ignore: [ main, develop, feature/W-21432332 ] # vsix-desktop-e2e rollout paths-ignore: - '.claude/**' - '.cursor/**' diff --git a/.github/workflows/orgBrowserE2E.yml b/.github/workflows/orgBrowserE2E.yml index 951237b769..613ed27e76 100644 --- a/.github/workflows/orgBrowserE2E.yml +++ b/.github/workflows/orgBrowserE2E.yml @@ -174,6 +174,7 @@ jobs: PLAYWRIGHT_VSCODE_VERSION: ${{ github.event_name != 'push' && inputs.vscode_version != '' && inputs.vscode_version || vars.PLAYWRIGHT_VSCODE_VERSION }} + E2E_FROM_VSIX: 1 steps: - name: Checkout repository uses: actions/checkout@v4 @@ -267,6 +268,7 @@ jobs: DREAMHOUSE_ORG_ALIAS: orgBrowserDreamhouseTestOrg CI: 1 VSCODE_DESKTOP: 1 + E2E_FROM_VSIX: 1 run: ${{ matrix.test_runner_prefix }}npm run test:desktop -w salesforcedx-vscode-org-browser -- --reporter=html - name: Retry failed tests (sequential) @@ -276,6 +278,7 @@ jobs: DREAMHOUSE_ORG_ALIAS: orgBrowserDreamhouseTestOrg CI: 1 VSCODE_DESKTOP: 1 + E2E_FROM_VSIX: 1 PLAYWRIGHT_WORKERS: 1 run: ${{ matrix.test_runner_prefix }}npm run test:desktop -w salesforcedx-vscode-org-browser -- --last-failed --reporter=html diff --git a/.github/workflows/orgE2E.yml b/.github/workflows/orgE2E.yml index a113e92347..b1e41f16d9 100644 --- a/.github/workflows/orgE2E.yml +++ b/.github/workflows/orgE2E.yml @@ -18,7 +18,7 @@ on: type: string default: '' push: - branches-ignore: [ main, develop ] + branches-ignore: [ main, develop, feature/W-21432332 ] # vsix-desktop-e2e rollout paths-ignore: - '.claude/**' - '.cursor/**' diff --git a/.github/workflows/playwrightVscodeExtE2E.yml b/.github/workflows/playwrightVscodeExtE2E.yml index d04b4417a1..617cda6567 100644 --- a/.github/workflows/playwrightVscodeExtE2E.yml +++ b/.github/workflows/playwrightVscodeExtE2E.yml @@ -18,7 +18,7 @@ on: type: string default: '' push: - branches-ignore: [main, develop] + branches-ignore: [main, develop, feature/W-21432332] # vsix-desktop-e2e rollout paths-ignore: - '.claude/**' - '.cursor/**' diff --git a/.github/workflows/servicesE2E.yml b/.github/workflows/servicesE2E.yml index c6e7ca8eda..45ca506090 100644 --- a/.github/workflows/servicesE2E.yml +++ b/.github/workflows/servicesE2E.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: workflow_call: push: - branches-ignore: [ main, develop ] + branches-ignore: [ main, develop, feature/W-21432332 ] # vsix-desktop-e2e rollout paths-ignore: - '.claude/**' - '.cursor/**' diff --git a/.github/workflows/snippetsE2E.yml b/.github/workflows/snippetsE2E.yml index f7d5c6d9d1..fd55850939 100644 --- a/.github/workflows/snippetsE2E.yml +++ b/.github/workflows/snippetsE2E.yml @@ -18,7 +18,7 @@ on: type: string default: '' push: - branches-ignore: [ main, develop ] + branches-ignore: [ main, develop, feature/W-21432332 ] # vsix-desktop-e2e rollout paths-ignore: - '.claude/**' - '.cursor/**' diff --git a/.github/workflows/soqlE2E.yml b/.github/workflows/soqlE2E.yml index 3e729fdd66..8476f99c25 100644 --- a/.github/workflows/soqlE2E.yml +++ b/.github/workflows/soqlE2E.yml @@ -18,7 +18,7 @@ on: type: string default: '' push: - branches-ignore: [ main, develop ] + branches-ignore: [ main, develop, feature/W-21432332 ] # vsix-desktop-e2e rollout paths-ignore: - '.claude/**' - '.cursor/**' diff --git a/.github/workflows/testCommitExceptMain.yml b/.github/workflows/testCommitExceptMain.yml index 9aa582343a..6f30f93d56 100644 --- a/.github/workflows/testCommitExceptMain.yml +++ b/.github/workflows/testCommitExceptMain.yml @@ -1,7 +1,7 @@ name: Commit Workflow on: push: - branches-ignore: [main, develop] + branches-ignore: [main, develop, feature/W-21432332] # vsix-desktop-e2e rollout paths-ignore: - '.claude/**' - '.cursor/**' diff --git a/.github/workflows/visualforceE2E.yml b/.github/workflows/visualforceE2E.yml index 003fc6a305..49079a7eba 100644 --- a/.github/workflows/visualforceE2E.yml +++ b/.github/workflows/visualforceE2E.yml @@ -18,7 +18,7 @@ on: type: string default: '' push: - branches-ignore: [ main, develop ] + branches-ignore: [ main, develop, feature/W-21432332 ] # vsix-desktop-e2e rollout paths-ignore: - '.claude/**' - '.cursor/**' diff --git a/packages/playwright-vscode-ext/package.json b/packages/playwright-vscode-ext/package.json index f47b4dd5e4..d51e217677 100644 --- a/packages/playwright-vscode-ext/package.json +++ b/packages/playwright-vscode-ext/package.json @@ -73,6 +73,9 @@ "test:desktop": { "env": { "VSCODE_DESKTOP": "1", + "E2E_FROM_VSIX": { + "external": true + }, "PLAYWRIGHT_WORKERS": { "external": true } diff --git a/packages/playwright-vscode-ext/src/fixtures/createDesktopTest.ts b/packages/playwright-vscode-ext/src/fixtures/createDesktopTest.ts index 493260c4b6..df9c72642a 100644 --- a/packages/playwright-vscode-ext/src/fixtures/createDesktopTest.ts +++ b/packages/playwright-vscode-ext/src/fixtures/createDesktopTest.ts @@ -8,8 +8,10 @@ // This is Node.js test infrastructure, not extension code import type { WorkerFixtures, TestFixtures } from './desktopFixtureTypes'; import { test as base, _electron as electron } from '@playwright/test'; -import { downloadAndUnzipVSCode } from '@vscode/test-electron'; -import type { ChildProcess } from 'node:child_process'; +import { downloadAndUnzipVSCode, resolveCliPathFromVSCodeExecutablePath } from '@vscode/test-electron'; +import { spawnSync, type ChildProcess } from 'node:child_process'; +import * as crypto from 'node:crypto'; +import { existsSync, readdirSync } from 'node:fs'; import * as fs from 'node:fs/promises'; import * as path from 'node:path'; @@ -51,6 +53,89 @@ type CreateDesktopTestOptions = { disableOtherExtensions?: boolean; /** Optional user settings to write to User/settings.json (e.g. to reduce GitHub/Git prompts). */ userSettings?: Record; + /** + * When true, install VSIXs and launch VS Code with --extensions-dir instead of --extensionDevelopmentPath. + * Exercises the real shipping artifact (bundled dist/, packageUpdates, .vscodeignore). + * Defaults to `process.env.E2E_FROM_VSIX === '1'` — set that env var in CI to enable without code changes. + */ + useVsix?: boolean; +}; + +/** + * Resolve *.vsix files for the given package directories (relative to repo root packages/). + * Fails loudly if a package has 0 or >1 VSIX (wireit should produce exactly one). + */ +const resolveVsixPaths = (repoRoot: string, packageDirs: string[]): string[] => + packageDirs.map(dir => { + const pkgDir = path.join(repoRoot, 'packages', dir); + const vsixFiles = existsSync(pkgDir) ? readdirSync(pkgDir).filter(f => f.endsWith('.vsix')) : []; + if (vsixFiles.length !== 1) { + throw new Error( + `Expected exactly 1 VSIX in packages/${dir}/ but found ${vsixFiles.length}: [${vsixFiles.join(', ')}]. ` + + `Run 'npm run vscode:package -w ${dir}' first.` + ); + } + return path.join(pkgDir, vsixFiles[0]); + }); + +/** + * Compute a cache key from the combined sha256 of all VSIX files. + * Uses file sizes+mtimes as a fast proxy — avoids reading multi-MB VSIX bytes. + */ +const computeVsixCacheKey = async (vsixPaths: string[]): Promise => { + const hash = crypto.createHash('sha256'); + for (const p of vsixPaths) { + const stat = await fs.stat(p); + hash.update(`${p}:${stat.size}:${stat.mtimeMs}`); + } + return hash.digest('hex').slice(0, 16); +}; + +/** + * Install VSIXs into a hash-keyed cache dir under /.vscode-test/ext-/. + * Each worker gets its own per-pid tmp dir to avoid concurrent install conflicts. + * Atomic rename to final cache dir; second worker to finish sees the dir exists and cleans up. + * Idempotent: skips if /extensions.json already exists (first worker won). + */ +const installVsixsToCache = async ( + cacheDir: string, + vsixPaths: string[], + vscodeExecutable: string +): Promise => { + const extensionsJson = path.join(cacheDir, 'extensions.json'); + if (existsSync(extensionsJson)) { + return; // already installed — fast path + } + + // Per-pid tmp dir: avoids concurrent workers writing to the same directory + const tmpDir = `${cacheDir}.tmp.${process.pid}`; + await fs.rm(tmpDir, { recursive: true, force: true }); + await fs.mkdir(tmpDir, { recursive: true }); + + const cli = resolveCliPathFromVSCodeExecutablePath(vscodeExecutable); + const result = spawnSync( + cli, + [ + '--extensions-dir', + tmpDir, + '--user-data-dir', + path.join(tmpDir, '.ud'), + ...vsixPaths.flatMap(p => ['--install-extension', p]) + ], + { stdio: 'inherit', shell: process.platform === 'win32' } + ); + + if (result.status !== 0) { + await fs.rm(tmpDir, { recursive: true, force: true }); + throw new Error(`VSIX install failed (exit ${result.status}). VSIXs: ${vsixPaths.join(', ')}`); + } + + // Atomic rename: first worker wins; others clean up their own tmp and use the winner's dir + try { + await fs.rename(tmpDir, cacheDir); + } catch { + await fs.rm(tmpDir, { recursive: true, force: true }); + } }; /** Creates a Playwright test instance configured for desktop Electron testing with services extension */ @@ -64,6 +149,12 @@ export const createDesktopTest = (options: CreateDesktopTestOptions) => { userSettings } = options; + const useVsix = options.useVsix ?? process.env.E2E_FROM_VSIX === '1'; + + // Current package name = the packages/ that owns this fixture file. + // fixturesDir is e.g. /packages/salesforcedx-vscode-org-browser/test/playwright/fixtures + const packageDir = path.basename(path.resolve(fixturesDir, '..', '..', '..')); + const test = base.extend({ // Download VS Code once per worker (cached at repo root .vscode-test/) vscodeExecutable: [ @@ -77,6 +168,24 @@ export const createDesktopTest = (options: CreateDesktopTestOptions) => { { scope: 'worker' } ], + // Install VSIXs once per worker into a hash-keyed cache dir (VSIX mode only) + installedExtensionsDir: [ + async ({ vscodeExecutable }, use): Promise => { + if (!useVsix) { + await use(undefined); + return; + } + const repoRoot = resolveRepoRoot(fixturesDir); + const allDirs = [packageDir, 'salesforcedx-vscode-services', ...additionalExtensionDirs]; + const vsixPaths = resolveVsixPaths(repoRoot, allDirs); + const cacheKey = await computeVsixCacheKey(vsixPaths); + const cacheDir = path.join(repoRoot, '.vscode-test', `ext-${cacheKey}`); + await installVsixsToCache(cacheDir, vsixPaths, vscodeExecutable); + await use(cacheDir); + }, + { scope: 'worker' } + ], + // Create workspace directory (shared with electronApp so tests can access path) workspaceDir: async ({}, use): Promise => { const dir = emptyWorkspace ? await createEmptyTestWorkspace() : await createTestWorkspace(orgAlias); @@ -84,7 +193,7 @@ export const createDesktopTest = (options: CreateDesktopTestOptions) => { }, // Launch fresh Electron instance per test - electronApp: async ({ vscodeExecutable, workspaceDir }, use): Promise => { + electronApp: async ({ vscodeExecutable, workspaceDir, installedExtensionsDir }, use): Promise => { // Use subdirectory of workspace for user data (keeps everything isolated and together) const userDataDir = path.join(workspaceDir, '.vscode-test-user-data'); await fs.mkdir(userDataDir, { recursive: true }); @@ -113,24 +222,11 @@ export const createDesktopTest = (options: CreateDesktopTestOptions) => { await fs.mkdir(userSettingsDir, { recursive: true }); await fs.writeFile(path.join(userSettingsDir, 'settings.json'), JSON.stringify(effectiveUserSettings, null, 2)); } - const extensionsDir = path.join(workspaceDir, '.vscode-test-extensions'); - await fs.mkdir(extensionsDir, { recursive: true }); const packageRoot = path.resolve(fixturesDir, '..', '..', '..'); - - // Collect all extension paths: current extension + services + any additional - const videosDir = path.join(packageRoot, 'test-results', 'videos'); await fs.mkdir(videosDir, { recursive: true }); - const extensionArgs = [ - // Extension path is the package root (contains package.json and bundled dist/index.js) - packageRoot, - ...additionalExtensionDirs - .concat(['salesforcedx-vscode-services']) - .map(dir => path.resolve(packageRoot, '..', dir)) - ].map(p => `--extensionDevelopmentPath=${p}`); - // Explicitly disable built-in GitHub/Copilot/Chat extensions that can trigger // the GitHub OAuth browser tab on startup. `--disable-extensions` only disables // user-installed extensions; built-ins must be disabled individually. @@ -142,16 +238,38 @@ export const createDesktopTest = (options: CreateDesktopTestOptions) => { 'GitHub.copilot-chat' ].map(id => `--disable-extension=${id}`); - const launchArgs = [ - `--user-data-dir=${userDataDir}`, - `--extensions-dir=${extensionsDir}`, - ...extensionArgs, - ...(disableOtherExtensions ? ['--disable-extensions'] : []), - ...disabledBuiltins, - '--disable-workspace-trust', - '--no-sandbox', - workspaceDir - ]; + let launchArgs: string[]; + if (useVsix) { + // VSIX mode: extensions installed into hash-keyed cache dir; no dev path needed + launchArgs = [ + `--user-data-dir=${userDataDir}`, + `--extensions-dir=${installedExtensionsDir}`, + ...disabledBuiltins, + '--disable-workspace-trust', + '--no-sandbox', + workspaceDir + ]; + } else { + const extensionsDir = path.join(workspaceDir, '.vscode-test-extensions'); + await fs.mkdir(extensionsDir, { recursive: true }); + const extensionArgs = [ + // Extension path is the package root (contains package.json and bundled dist/index.js) + packageRoot, + ...additionalExtensionDirs + .concat(['salesforcedx-vscode-services']) + .map(dir => path.resolve(packageRoot, '..', dir)) + ].map(p => `--extensionDevelopmentPath=${p}`); + launchArgs = [ + `--user-data-dir=${userDataDir}`, + `--extensions-dir=${extensionsDir}`, + ...extensionArgs, + ...(disableOtherExtensions ? ['--disable-extensions'] : []), + ...disabledBuiltins, + '--disable-workspace-trust', + '--no-sandbox', + workspaceDir + ]; + } const electronApp = await electron.launch({ executablePath: vscodeExecutable, diff --git a/packages/playwright-vscode-ext/src/fixtures/desktopFixtureTypes.ts b/packages/playwright-vscode-ext/src/fixtures/desktopFixtureTypes.ts index 9ee68832be..d6bb0f2e62 100644 --- a/packages/playwright-vscode-ext/src/fixtures/desktopFixtureTypes.ts +++ b/packages/playwright-vscode-ext/src/fixtures/desktopFixtureTypes.ts @@ -10,6 +10,8 @@ import type { ElectronApplication, Page } from '@playwright/test'; /** Worker-scoped fixtures (shared across tests in same worker) */ export type WorkerFixtures = { vscodeExecutable: string; + /** Resolved extensions dir: VSIX-install cache path (VSIX mode) or undefined (dev-path mode). */ + installedExtensionsDir: string | undefined; }; /** Test-scoped fixtures (fresh for each test) */ diff --git a/packages/salesforcedx-vscode-apex-log/package.json b/packages/salesforcedx-vscode-apex-log/package.json index 173f855454..5fc347e44b 100644 --- a/packages/salesforcedx-vscode-apex-log/package.json +++ b/packages/salesforcedx-vscode-apex-log/package.json @@ -213,6 +213,9 @@ "command": "playwright test --config=test/playwright/playwright.config.desktop.ts", "env": { "VSCODE_DESKTOP": "1", + "E2E_FROM_VSIX": { + "external": true + }, "PLAYWRIGHT_WORKERS": { "external": true } diff --git a/packages/salesforcedx-vscode-apex-replay-debugger/package.json b/packages/salesforcedx-vscode-apex-replay-debugger/package.json index 578b559b92..bc7e0f9f15 100644 --- a/packages/salesforcedx-vscode-apex-replay-debugger/package.json +++ b/packages/salesforcedx-vscode-apex-replay-debugger/package.json @@ -168,6 +168,9 @@ "command": "playwright test --config=test/playwright/playwright.config.desktop.ts", "env": { "VSCODE_DESKTOP": "1", + "E2E_FROM_VSIX": { + "external": true + }, "PLAYWRIGHT_WORKERS": { "external": true } diff --git a/packages/salesforcedx-vscode-apex-testing/package.json b/packages/salesforcedx-vscode-apex-testing/package.json index 9b9b35f4db..e215e02024 100644 --- a/packages/salesforcedx-vscode-apex-testing/package.json +++ b/packages/salesforcedx-vscode-apex-testing/package.json @@ -211,6 +211,9 @@ "command": "playwright test --config=test/playwright/playwright.config.desktop.ts", "env": { "VSCODE_DESKTOP": "1", + "E2E_FROM_VSIX": { + "external": true + }, "PLAYWRIGHT_WORKERS": { "external": true } diff --git a/packages/salesforcedx-vscode-core/package.json b/packages/salesforcedx-vscode-core/package.json index 2c11a5fbfa..a4fc24bb71 100644 --- a/packages/salesforcedx-vscode-core/package.json +++ b/packages/salesforcedx-vscode-core/package.json @@ -171,6 +171,9 @@ "command": "playwright test --config=test/playwright/playwright.config.desktop.ts", "env": { "VSCODE_DESKTOP": "1", + "E2E_FROM_VSIX": { + "external": true + }, "PLAYWRIGHT_WORKERS": { "external": true } diff --git a/packages/salesforcedx-vscode-lwc/package.json b/packages/salesforcedx-vscode-lwc/package.json index 4fde0b29f2..e43fce7d14 100644 --- a/packages/salesforcedx-vscode-lwc/package.json +++ b/packages/salesforcedx-vscode-lwc/package.json @@ -145,6 +145,9 @@ "command": "playwright test --config=test/playwright/playwright.config.desktop.ts", "env": { "VSCODE_DESKTOP": "1", + "E2E_FROM_VSIX": { + "external": true + }, "PLAYWRIGHT_WORKERS": { "external": true } diff --git a/packages/salesforcedx-vscode-metadata/package.json b/packages/salesforcedx-vscode-metadata/package.json index 82a2286601..478795efbf 100644 --- a/packages/salesforcedx-vscode-metadata/package.json +++ b/packages/salesforcedx-vscode-metadata/package.json @@ -187,6 +187,9 @@ "command": "playwright test --config=test/playwright/playwright.config.desktop.ts --project=parallel", "env": { "VSCODE_DESKTOP": "1", + "E2E_FROM_VSIX": { + "external": true + }, "PLAYWRIGHT_WORKERS": { "external": true } @@ -228,6 +231,9 @@ "command": "playwright test --config=test/playwright/playwright.config.desktop.ts --project=conflicts", "env": { "VSCODE_DESKTOP": "1", + "E2E_FROM_VSIX": { + "external": true + }, "PLAYWRIGHT_WORKERS": { "external": true } diff --git a/packages/salesforcedx-vscode-org-browser/package.json b/packages/salesforcedx-vscode-org-browser/package.json index 6fba01fcbc..98576df9ce 100644 --- a/packages/salesforcedx-vscode-org-browser/package.json +++ b/packages/salesforcedx-vscode-org-browser/package.json @@ -210,13 +210,16 @@ "command": "playwright test --config=test/playwright/playwright.config.desktop.ts", "env": { "VSCODE_DESKTOP": "1", + "E2E_FROM_VSIX": { + "external": true + }, "PLAYWRIGHT_WORKERS": { "external": true } }, "dependencies": [ - "vscode:bundle", - "../salesforcedx-vscode-services:vscode:bundle", + "vscode:package", + "../salesforcedx-vscode-services:vscode:package", "../salesforcedx-vscode-services:spans:server", "../playwright-vscode-ext:compile" ], diff --git a/packages/salesforcedx-vscode-org/package.json b/packages/salesforcedx-vscode-org/package.json index e420e77845..1e2c28d193 100644 --- a/packages/salesforcedx-vscode-org/package.json +++ b/packages/salesforcedx-vscode-org/package.json @@ -141,6 +141,9 @@ "command": "playwright test --config=test/playwright/playwright.config.desktop.ts", "env": { "VSCODE_DESKTOP": "1", + "E2E_FROM_VSIX": { + "external": true + }, "PLAYWRIGHT_WORKERS": { "external": true } diff --git a/packages/salesforcedx-vscode-soql/package.json b/packages/salesforcedx-vscode-soql/package.json index 21096da6be..ef937ee37f 100644 --- a/packages/salesforcedx-vscode-soql/package.json +++ b/packages/salesforcedx-vscode-soql/package.json @@ -265,6 +265,9 @@ "command": "playwright test --config=test/playwright/playwright.config.desktop.ts", "env": { "VSCODE_DESKTOP": "1", + "E2E_FROM_VSIX": { + "external": true + }, "PLAYWRIGHT_WORKERS": { "external": true } diff --git a/packages/salesforcedx-vscode-visualforce/package.json b/packages/salesforcedx-vscode-visualforce/package.json index 481c0675fe..9b6e03e171 100644 --- a/packages/salesforcedx-vscode-visualforce/package.json +++ b/packages/salesforcedx-vscode-visualforce/package.json @@ -128,6 +128,9 @@ "command": "playwright test --config=test/playwright/playwright.config.desktop.ts", "env": { "VSCODE_DESKTOP": "1", + "E2E_FROM_VSIX": { + "external": true + }, "PLAYWRIGHT_WORKERS": { "external": true }