Repository navigation
ci: let rstack-ecosystem-ci run the E2E suites - #126
Merged
Merged
Conversation
On Linux without DISPLAY, e2e/run.mjs re-execs itself under `xvfb-run -a`, so `pnpm test:e2e` works unchanged on rstack-ecosystem-ci's ubuntu-latest runners (#40). This repo's CI stays Windows + macOS.
RSTACK_E2E_TOOLCHAIN_OVERRIDES="name=<package dir>" packs each package into <fixture>/.toolchain/ and adds a file: override to every fixture's pnpm-workspace.yaml, so rstack-ecosystem-ci can run the suites against unreleased builds. Setup fails if the lockfile still holds a registry version; the yaml is not restored (disposable checkouts).
The fixture pin in the setupFixtures.mjs header was two releases stale.
Also record that rslint needs the host native package beside the core:
core resolves its binary through require.resolve('@rslint/native-<tuple>/bin').
VSCODE_TEST_CACHE_PATH is forwarded to @vscode/test-electron by every runTest.ts entry. rstack-ecosystem-ci runs git clean -fdxq in the checkout before each suite, which would wipe .vscode-test/ between jobs.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This was referenced Nov 5, 2026
Merged
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
rstack-ecosystem-ci runs only
test:unitandlintfor this repo today. Its root override — local builds of@rstest/core/@rslint/coreinjected into the consumer checkout — cannot reach the E2E fixtures: every fixture is its own pnpm workspace root and installs published packages from npm. This PR adds the harness support the eco-ci suites need to run the E2E slices against an unreleased toolchain.packages/vscode/e2e/ ├── run.mjs # re-exec under `xvfb-run -a` on Linux, only for slices that launch VS Code +├── vscodeTestCache.ts # VSCODE_TEST_CACHE_PATH shared by every @vscode/test-electron entry ├── setupFixtures.mjs # RSTACK_E2E_TOOLCHAIN_OVERRIDES: pack once, copy into each fixture ├── runTest.ts ├── rstest/runTest.ts └── lint/runTest.tsRSTACK_E2E_TOOLCHAIN_OVERRIDES="name=<absolute package dir>,…"packs each package once into the first fixture's.toolchain/, copies the tarball into every fixture that consumes it, and writes a fixture-relativefile:override into that fixture'spnpm-workspace.yaml. The relative spec is required: the dependency-recovery suites copy a fixture to tmpdir and reinstall with--frozen-lockfile. A later run with a different override set replaces the block an earlier run wrote.@rslint/coreand the host@rslint/native-<tuple>: core resolves its binary throughrequire.resolve('@rslint/native-<tuple>/bin'), so overriding the core alone leaves the published binary in place.VSCODE_TEST_CACHE_PATHmoves the VS Code download out of.vscode-test/. rstack-ecosystem-ci runsgit clean -fdxqin the checkout before each suite, which would wipe it.smoke) starts no X server. This repo's own CI stays Windows + macOS; the Linux path runs only in rstack-ecosystem-ci.Evidence
Before: eco-ci ran
test:unit+lintonly, so the E2E fixtures installed the published toolchain and never saw the unreleased build.After (local, macOS, marker-patched tarballs that print a unique line when loaded):
pnpm lint→ pass (204 files);pnpm test:unit→ 384 passed.VSCODE_CLI=1 node e2e/run.mjs rstestwith the marker@rstest/core→ exit 0; all 4 fixtures reportedresolved through .toolchain (no registry version in pnpm-lock.yaml); 23[PROBE-RSTEST-CORE] 0.12.5-probe.1 loadedlines from the test worker.VSCODE_CLI=1 node e2e/run.mjs smoke lintwith marker@rslint/core+@rslint/native-darwin-arm64→ exit 0; 12 fixture resolutions (6 fixtures × 2 packages); all 21 lint suites ran;[PROBE-RSLINT-CORE] 0.10.0-probe.1 loaded.VSCODE_TEST_CACHE_PATH=<scratch dir>downloaded VS Code (339.67 MB) into that directory and the filtered lint suite passed;.vscode-test/was not touched.Merge Danger
Door: two-way
Reverting restores the previous harness behavior; the extension itself does not change at runtime.
Blast Radius: ecosystem-ci
This repo's CI is unchanged (Windows + macOS). The Linux/xvfb path is only exercised by rstack-ecosystem-ci, whose suite change follows separately.
Supersedes the closed #66; related to #40. The companion rstack-ecosystem-ci change will follow separately.