Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
test(vscode): freeze fixture lockfiles and let Renovate bump them
  • Loading branch information
fi3ework committed Sep 3, 2026
commit b5d0e993a6072307539ae4518e61a3bf211e991d
6 changes: 3 additions & 3 deletions .github/renovate.json5
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
'schedule:weekly',
'helpers:pinGitHubActionDigests',
],
// E2E fixtures deliberately pin the published toolchain versions the suites
// run against; bumping them is a manual, E2E-verified decision.
ignorePaths: ['**/node_modules/**', 'packages/vscode/e2e/**'],
// E2E fixtures pin published packages with committed lockfiles; their Rstack
// dependencies are updated by the `rstack toolchain` group below.
ignorePaths: ['**/node_modules/**'],
packageRules: [
// Use chore as semantic commit type for commit messages
{
Expand Down
7 changes: 2 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -150,12 +150,9 @@ tests-dist/
# F5 playground's materialized Node (see .vscode/tasks.json "playground node")
packages/vscode/.playground/

# E2E fixtures install published npm versions on demand; only
# their manifests and configs are tracked.
# E2E fixtures install published npm versions from committed lockfiles;
# their node_modules directories stay disposable.
packages/vscode/e2e/fixtures/*/node_modules/
packages/vscode/e2e/fixtures/*/pnpm-lock.yaml
packages/vscode/e2e/lint/fixtures/pnpm-lock.yaml
packages/vscode/e2e/rstest/fixtures/*/pnpm-lock.yaml

# Build-time copy of the workspace root LICENSE (see rslib.config.mts)
packages/vscode/LICENSE
Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ pnpm install # also installs the git hooks (rs hooks)
| `pnpm lint` | Lint + type check (`rs lint --type-check`) |
| `pnpm fmt` | Format the repo (`rs fmt`) |
| `pnpm test:unit` | Unit tests |
| `pnpm test:e2e` | Full E2E chain (installs fixtures, launches a real VS Code) |
| `pnpm test:e2e` | Full E2E chain (installs fixtures from committed lockfiles, launches a real VS Code) |

To try the extension: press F5 in VS Code at the repo root — the playground launch config starts a watch build, lets you pick a fixture project, and opens an Extension Development Host on it. Run `pnpm --filter rstack test:e2e:fixtures` once beforehand to install the fixture dependencies.
To try the extension: press F5 in VS Code at the repo root — the playground launch config starts a watch build, lets you pick a fixture project, and opens an Extension Development Host on it. Run `pnpm --filter rstack test:e2e:fixtures` once beforehand to install the fixture dependencies from their committed lockfiles.

## Submitting changes

Expand Down
2 changes: 1 addition & 1 deletion packages/vscode/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,6 @@ One extension replacing the standalone `rstack.rslint` and `rstack.rstest` exten
## Testing

- E2E suites ported from upstream keep upstream's assertion semantics; every intentional deviation is documented in a comment in the test itself. A failing ported test is a regression, not a test to adjust.
- E2E fixtures install published npm packages (not workspace links): the extension must work against what users actually install. Fixture `node_modules` are disposable and never committed.
- E2E fixtures install published npm packages (not workspace links): the extension must work against what users actually install. Each standalone fixture commits its `pnpm-lock.yaml` for deterministic installs; Renovate updates the manifests and lockfiles, while fixture `node_modules` remain disposable and uncommitted.
- Prefer running the E2E slice that covers the change over the full chain: `pnpm test:e2e <slice ...>` (or the `test:e2e:<slice>` aliases). Slices are declared in the `SLICES` table in `e2e/run.mjs` (name, fixtures, entry) — the package.json scripts are thin forwards and carry no slice knowledge. `RSTACK_LINT_E2E_SUITES=<name,...>` filters lint suites.
- Run E2E locally as `VSCODE_CLI=1 pnpm test:e2e <slice ...>`. Without it, the launched VS Code overwrites the extension host's `PATH` with a login-shell snapshot; on a machine whose login-shell `node` is below the runtime floor, the User Node preflight (correctly) refuses and every fmt test times out waiting for a server. CI is unaffected — its PATH `node` is new enough either way. The heavier alternative, `--force-disable-user-env` in `e2e/runTest.ts`, was deliberately not taken: it would change env fidelity for every slice.
113 changes: 113 additions & 0 deletions packages/vscode/e2e/fixtures/rslint/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading