Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
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
6 changes: 3 additions & 3 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
strategy:
fail-fast: false
matrix:
group: [agent, environments, execution, files, workspace]
group: [agent, execution, files, interpreter, workspace]
env:
# Keep ExTester's downloads (test VS Code, ChromeDriver, settings, screenshots) inside the
# workspace so the artifact-upload paths are predictable. Both this and .test-extensions are
Expand Down Expand Up @@ -84,13 +84,13 @@ jobs:
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ~/.cache/pip
key: pip-${{ runner.os }}-py${{ steps.python.outputs.python-version }}-${{ hashFiles('src/kernels/deepnote/toolkitSpec.json', 'src/kernels/deepnote/deepnoteToolkitInstaller.node.ts') }}
key: pip-${{ runner.os }}-py${{ steps.python.outputs.python-version }}-${{ hashFiles('src/platform/common/toolkitSpec.json', 'src/kernels/deepnote/deepnoteToolkitInstaller.node.ts') }}

- name: Cache the managed Deepnote toolkit venv
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: .venv-e2e
key: e2e-venv-${{ runner.os }}-py${{ steps.python.outputs.python-version }}-${{ hashFiles('src/kernels/deepnote/toolkitSpec.json', 'src/kernels/deepnote/deepnoteToolkitInstaller.node.ts') }}
key: e2e-venv-${{ runner.os }}-py${{ steps.python.outputs.python-version }}-${{ hashFiles('src/platform/common/toolkitSpec.json', 'src/kernels/deepnote/deepnoteToolkitInstaller.node.ts') }}

- name: Warm the managed venv
run: npm run setup:e2e:venv
Expand Down
18 changes: 11 additions & 7 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -301,10 +301,11 @@ running inside the Extension Development Host.

1. Run the one-time setup. It fetches the test VS Code build, chromedriver, the Python extension and
the mock LLM server, then bakes the `deepnote-toolkit` venv into `.venv-e2e` and writes
`test/e2e/settings.generated.json`, without which `test:e2e` fails at launch. That file carries
`python.venvPath`, which is machine-scoped and so only takes effect from user settings — a
workspace `.vscode/settings.json` is silently ignored. `npm run setup:e2e:venv` regenerates it
without re-downloading VS Code.
`test/e2e/settings.generated.json`, without which `test:e2e` fails at launch. That file pins
`python.defaultInterpreterPath` to the baked venv, which is how every suite gets an interpreter
that already carries the toolkit. Both settings it writes only take effect from user settings,
which is where extest puts this file. `npm run setup:e2e:venv` regenerates it without
re-downloading VS Code.
1. Compile the E2E sources — like the unit tests, they run from compiled JS in `out/`.
1. Run the suites.

Expand All @@ -326,9 +327,12 @@ On a headless machine, wrap the command in `xvfb-run --auto-servernum --server-a

A few things worth knowing before you debug a failure:

- **The suites adopt `.venv-e2e` rather than provisioning their own venv**, which is most of the runtime.
If the Python extension does not offer it, the run still passes but takes several minutes longer and
logs `no interpreter under .venv-e2e was offered` — grep for that first when a run is unexpectedly slow.
- **The suites run against `.venv-e2e` rather than provisioning their own venv**, which is most of the
runtime. When it is missing the pinned interpreter does not exist, so the first run stops on the
install-consent modal and the suite times out there — re-run `npm run setup:e2e:venv` first.
- **A suite that needs a different interpreter** writes its own workspace `.vscode/settings.json`;
`python.defaultInterpreterPath` is `machine-overridable`, so the workspace value wins over the pin.
`suite/interpreter/` does this to get an interpreter without the toolkit.
- **Screenshots of failures** are written to `<test-resources>/screenshots/` and uploaded as CI artifacts.
- **CI shards by directory**, one job per group, so a new group directory must also be added to the matrix
in `.github/workflows/e2e.yml` — the `verify-coverage` job fails the build if a group ran nowhere, or if
Expand Down
82 changes: 0 additions & 82 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -103,41 +103,6 @@
"title": "%deepnote.commands.disableSnapshots.title%",
"category": "Deepnote"
},
{
"command": "deepnote.environments.create",
"title": "%deepnote.commands.environments.create.title%",
"category": "Deepnote",
"icon": "$(add)"
},
{
"command": "deepnote.environments.delete",
"title": "%deepnote.commands.environments.delete.title%",
"category": "Deepnote",
"icon": "$(trash)"
},
{
"command": "deepnote.environments.managePackages",
"title": "%deepnote.commands.environments.managePackages.title%",
"category": "Deepnote",
"icon": "$(package)"
},
{
"command": "deepnote.environments.editName",
"title": "%deepnote.commands.environments.editName.title%",
"category": "Deepnote"
},
{
"command": "deepnote.environments.refresh",
"title": "%deepnote.commands.environments.refresh.title%",
"category": "Deepnote",
"icon": "$(refresh)"
},
{
"command": "deepnote.environments.selectForNotebook",
"title": "%deepnote.commands.environments.selectForNotebook.title%",
"category": "Deepnote",
"icon": "$(server-environment)"
},
{
"command": "deepnote.manageIntegrations",
"title": "%deepnote.commands.manageIntegrations.title%",
Expand Down Expand Up @@ -912,16 +877,6 @@
"command": "deepnote.refreshExplorer",
"when": "view == deepnoteExplorer",
"group": "navigation@3"
},
{
"command": "deepnote.environments.create",
"when": "view == deepnoteEnvironments",
"group": "navigation@4"
},
{
"command": "deepnote.environments.refresh",
"when": "view == deepnoteEnvironments",
"group": "navigation@5"
}
],
"editor/context": [
Expand Down Expand Up @@ -1022,11 +977,6 @@
"group": "navigation@-1",
"when": "notebookType == 'deepnote'"
},
{
"command": "deepnote.environments.selectForNotebook",
"group": "navigation@0",
"when": "notebookType == 'deepnote'"
},
{
"command": "deepnote.manageIntegrations",
"group": "navigation@1",
Expand Down Expand Up @@ -1601,21 +1551,6 @@
"when": "view == deepnoteExplorer && viewItem != loading",
"group": "inline@2"
},
{
"command": "deepnote.environments.managePackages",
"when": "view == deepnoteEnvironments",
"group": "2_manage@1"
},
{
"command": "deepnote.environments.editName",
"when": "view == deepnoteEnvironments",
"group": "2_manage@2"
},
{
"command": "deepnote.environments.delete",
"when": "view == deepnoteEnvironments",
"group": "4_danger@1"
},
{
"command": "deepnote.addNotebookToProject",
"when": "view == deepnoteExplorer && viewItem == projectGroup",
Expand Down Expand Up @@ -2406,11 +2341,6 @@
"dark": "./resources/dark/deepnote-icon.svg"
}
},
{
"id": "deepnoteEnvironments",
"name": "%deepnote.views.environments.name%",
"when": "workspaceFolderCount != 0"
},
{
"type": "webview",
"id": "deepnoteViewVariables",
Expand Down Expand Up @@ -2617,18 +2547,6 @@
"completionEvents": [
"onCommand:deepnote.manageIntegrations"
]
},
{
"id": "deepnote.setupEnvironment",
"title": "%contributes.walkthroughs.deepnoteWelcome.steps.setupEnvironment.title%",
"description": "%contributes.walkthroughs.deepnoteWelcome.steps.setupEnvironment.description%",
"media": {
"image": "resources/walkthroughs/environments.png",
"altText": "%contributes.walkthroughs.deepnoteWelcome.steps.setupEnvironment.media.altText%"
},
"completionEvents": [
"onView:deepnoteEnvironments"
]
}
]
}
Expand Down
15 changes: 1 addition & 14 deletions package.nls.json
Original file line number Diff line number Diff line change
Expand Up @@ -289,17 +289,7 @@
"deepnote.commands.copyNotebookDetails.title": "Copy Active Deepnote Notebook Details",
"deepnote.views.explorer.name": "Explorer",
"deepnote.views.explorer.welcome": "No Deepnote notebooks found in this workspace.",
"deepnote.views.environments.name": "Environments",
"deepnote.command.selectNotebook.title": "Select Notebook",
"deepnote.commands.environments.create.title": "Create Environment",
"deepnote.commands.environments.start.title": "Start Server",
"deepnote.commands.environments.stop.title": "Stop Server",
"deepnote.commands.environments.restart.title": "Restart Server",
"deepnote.commands.environments.delete.title": "Delete Environment",
"deepnote.commands.environments.managePackages.title": "Manage Packages",
"deepnote.commands.environments.editName.title": "Rename Environment",
"deepnote.commands.environments.refresh.title": "Refresh",
"deepnote.commands.environments.selectForNotebook.title": "Select Environment for Notebook",
"contributes.walkthroughs.deepnoteWelcome.title": "Get Started with Deepnote",
"contributes.walkthroughs.deepnoteWelcome.description": "Your first steps to set up and explore Deepnote notebooks in VS Code.",
"contributes.walkthroughs.deepnoteWelcome.steps.exploreProjects.title": "Explore Your Projects",
Expand All @@ -313,8 +303,5 @@
"contributes.walkthroughs.deepnoteWelcome.steps.notebookBlocks.media.altText": "A Deepnote notebook showing different block types",
"contributes.walkthroughs.deepnoteWelcome.steps.connectDataSources.title": "Connect to Your Data Sources",
"contributes.walkthroughs.deepnoteWelcome.steps.connectDataSources.description": "Set up integrations to connect your notebooks to databases, data warehouses, and other services. Query your data directly from SQL blocks.",
"contributes.walkthroughs.deepnoteWelcome.steps.connectDataSources.media.altText": "The Manage Integrations panel for connecting data sources",
"contributes.walkthroughs.deepnoteWelcome.steps.setupEnvironment.title": "Set Up a Python Environment",
"contributes.walkthroughs.deepnoteWelcome.steps.setupEnvironment.description": "Create and manage Python environments for your notebooks. Install packages, configure dependencies, and switch between environments.",
"contributes.walkthroughs.deepnoteWelcome.steps.setupEnvironment.media.altText": "The Deepnote Environments panel showing available environments"
"contributes.walkthroughs.deepnoteWelcome.steps.connectDataSources.media.altText": "The Manage Integrations panel for connecting data sources"
}
Binary file removed resources/walkthroughs/environments.png
Binary file not shown.
Loading
Loading