Skip to content

acc: run dashboard tests under the READPLAN variant - #6162

Merged
Sankalp-Mittal merged 7 commits into
mainfrom
sankalp-mittal/dashboard-tests-readplan
Aug 5, 2026
Merged

acc: run dashboard tests under the READPLAN variant#6162
Sankalp-Mittal merged 7 commits into
mainfrom
sankalp-mittal/dashboard-tests-readplan

Conversation

@Sankalp-Mittal

Copy link
Copy Markdown
Collaborator

Changes

Add EnvMatrix.READPLAN = ["", "1"] to the dashboard acceptance tests that
deploy, and route their bundle deploy calls through the readplanarg helper so
each test runs twice: once with an in-memory plan, once applying a plan saved to
a file with --plan.

Because all EnvMatrix variants must produce identical output files, any
divergence between the two deploy paths now fails the test automatically.

Tests converted:

Test What it exercises
resources/dashboards/change-serialized-dashboard edits serialized_dashboard → update; asserts the PATCH/POST request bodies
resources/dashboards/nested-folders reads serialized_dashboard back from the API after deploy
resources/dashboards/publish-failure-cleans-up-dashboard publish failure path and the cleanup DELETE
deployment/bind/dashboard (+ recreation/) bind writes state without going through DoCreate/DoUpdate

Why

bundle deploy --plan takes a different code path than a plain deploy:
everything applied comes from the serialized plan file rather than from a plan
computed in memory. Only one dashboard test exercised that path, so a regression
in what a saved plan carries for dashboards would have gone uncaught.

This lands the coverage on its own, ahead of the serialized_dashboard
content-hash change (#6105), so that any later failure is unambiguously
attributable to that change rather than to a pre-existing gap.

Result

No request or state golden changed. The only golden edits are removed
>>> [CLI] bundle deploy trace lines — the deploys are no longer traced because
the command line itself differs between variants (--plan vs none).

That the shared goldens are byte-identical across both variants is the point:
out.patch.requests.direct.txt, out.post.requests.txt and
out.state_after_bind.*.json confirm both paths issue the same API requests and
persist the same state on main today.

Not converted

migrate/dashboards is deliberately left alone. It asserts on GET requests to
//dashboards to confirm the direct engine ran, but a saved-plan deploy skips
the read phase, so no GETs are recorded and that assertion has nothing to match.
Converting it would mean weakening a real assertion. Migration therefore remains
uncovered for the saved-plan path — worth noting, since like bind it writes state
without going through DoCreate/DoUpdate.

Tests

Acceptance-only; no production code changes. Verified green on unmodified
origin/main before converting, so failures were attributable. task fmt,
task ws and task lint-q are clean.

This pull request and its description were written by Isaac.

Sankalp-Mittal and others added 2 commits August 4, 2026 15:42
Deploying a saved plan (bundle deploy --plan) takes a different code path than
an in-memory plan: everything the deploy applies comes from the plan file. Only
one dashboard test exercised that path, so a regression in what a saved plan
carries for dashboards would not have been caught.

Add EnvMatrix.READPLAN = ["", "1"] to the dashboard tests that deploy, and route
their deploys through readplanarg so each runs both ways. Since all matrix
variants must produce identical output, any divergence between the two paths now
fails the test.

Covered: change-serialized-dashboard (content edit -> update), nested-folders
(reads serialized_dashboard back from the API), publish-failure-cleans-up-dashboard
(failure path and cleanup DELETE), and deployment/bind/dashboard plus its
recreation/ subdir (bind writes state without going through DoCreate/DoUpdate).

The deploys are no longer traced because the command line itself differs between
variants (--plan vs none); the goldens they feed are shared and unchanged, which
is what shows both paths send the same requests.

migrate/dashboards is left alone: it asserts on GET requests to //dashboards to
confirm the direct engine ran, and a saved-plan deploy skips the read phase, so
that assertion has nothing to match.

Co-authored-by: Isaac
@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: 8df533e

Run: 31001467409

Env 🔄​flaky 💚​RECOVERED 🙈​SKIP ✅​pass 🙈​skip Time
🔄​ aws linux 4 3 4 304 1091 17:47
🔄​ aws windows 1 4 4 308 1089 16:00
💚​ azure linux 4 4 306 1091 16:33
🔄​ azure windows 3 3 4 306 1089 24:25
🔄​ gcp linux 3 5 305 1091 23:07
🔄​ gcp windows 4 5 306 1089 22:43
14 interesting tests: 7 flaky, 4 SKIP, 3 RECOVERED
Test Name aws linux aws windows azure linux azure windows gcp linux gcp windows
🔄​ TestAccept 🔄​f 💚​R 💚​R 🔄​f 🔄​f 🔄​f
🙈​ TestAccept/bundle/invariant/no_drift 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🔄​ TestAccept/bundle/resources/dashboards/change-serialized-dashboard 🔄​f ✅​p ✅​p 🔄​f 🔄​f 🔄​f
🔄​ TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN= ✅​p ✅​p ✅​p ✅​p ✅​p 🔄​f
🔄​ TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=1 🔄​f ✅​p ✅​p ✅​p 🔄​f ✅​p
🔄​ TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DATABRICKS_BUNDLE_ENGINE=terraform/READPLAN= ✅​p ✅​p ✅​p 🔄​f ✅​p ✅​p
🙈​ TestAccept/bundle/resources/vector_search_endpoints/drift/recreated_same_name 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/ssh/connection 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🔄​ TestSyncIncrementalFileOverwritesFolder ✅​p 🔄​f ✅​p ✅​p ✅​p ✅​p
🔄​ TestSyncIncrementalSyncPythonNotebookDelete 🔄​f ✅​p ✅​p ✅​p ✅​p 🔄​f
💚​ TestFetchRepositoryInfoAPI_FromRepo 💚​R 💚​R 💚​R 💚​R 🙈​S 🙈​S
💚​ TestFetchRepositoryInfoAPI_FromRepo/root 💚​R 💚​R 💚​R 💚​R
💚​ TestFetchRepositoryInfoAPI_FromRepo/subdir 💚​R 💚​R 💚​R 💚​R
Top 50 slowest tests (at least 2 minutes):
duration env testname
7:18 aws windows TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=terraform/READPLAN=
6:41 aws windows TestAccept
6:39 azure windows TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=terraform/READPLAN=
5:48 azure windows TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DATABRICKS_BUNDLE_ENGINE=terraform/READPLAN=
5:46 gcp windows TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=terraform/READPLAN=
5:18 gcp windows TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=1
5:09 gcp windows TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=
5:00 azure windows TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=
4:56 gcp windows TestAccept/bundle/deployment/bind/dashboard/DATABRICKS_BUNDLE_ENGINE=terraform/READPLAN=
4:55 gcp linux TestAccept/bundle/deployment/bind/dashboard/DATABRICKS_BUNDLE_ENGINE=terraform/READPLAN=
4:17 azure linux TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DATABRICKS_BUNDLE_ENGINE=terraform/READPLAN=
4:16 gcp windows TestFilerWorkspaceFilesExtensionsReadDir
4:00 gcp windows TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DATABRICKS_BUNDLE_ENGINE=terraform/READPLAN=
3:59 gcp windows TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=
3:55 azure linux TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=terraform/READPLAN=
3:52 azure windows TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=1
3:38 azure linux TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=
3:37 aws linux TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=terraform/READPLAN=
3:36 gcp linux TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DATABRICKS_BUNDLE_ENGINE=terraform/READPLAN=
3:31 gcp linux TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=1
3:26 aws linux TestAccept/bundle/deployment/bind/dashboard/DATABRICKS_BUNDLE_ENGINE=terraform/READPLAN=
3:23 aws windows TestAccept/bundle/resources/dashboards/nested-folders/DATABRICKS_BUNDLE_ENGINE=terraform/READPLAN=
3:21 aws linux TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=1
3:15 gcp windows TestFilerWorkspaceFilesExtensionsDelete
3:15 azure windows TestAccept/bundle/deployment/bind/dashboard/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=
3:15 azure windows TestAccept/bundle/deployment/bind/dashboard/DATABRICKS_BUNDLE_ENGINE=terraform/READPLAN=
3:08 gcp linux TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=terraform/READPLAN=
3:08 aws windows TestAccept/bundle/resources/dashboards/nested-folders/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=
3:08 gcp linux TestFilerWorkspaceFilesExtensionsReadDir
3:06 gcp windows TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=1
3:05 aws linux TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=
3:03 azure linux TestAccept
3:01 gcp windows TestAccept/bundle/deployment/bind/dashboard/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=1
2:58 aws windows TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DATABRICKS_BUNDLE_ENGINE=terraform/READPLAN=
2:57 azure windows TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=
2:56 azure linux TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=
2:52 azure linux TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=1
2:52 azure linux TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=1
2:52 aws windows TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=1
2:51 aws windows TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=
2:50 gcp windows TestAccept/bundle/resources/dashboards/nested-folders/DATABRICKS_BUNDLE_ENGINE=terraform/READPLAN=
2:47 azure linux TestAccept/bundle/deployment/bind/dashboard/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=1
2:46 azure windows TestImportDirWithOverwriteFlag
2:44 aws linux TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DATABRICKS_BUNDLE_ENGINE=terraform/READPLAN=
2:44 azure windows TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=1
2:42 aws linux TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=
2:38 gcp windows TestImportDirDoesNotOverwrite
2:37 azure linux TestFilerWorkspaceFilesExtensionsReadDir
2:34 aws windows TestFilerRecursiveDelete/workspace_files_extensions
2:33 aws linux TestAccept/bundle/resources/dashboards/nested-folders/DATABRICKS_BUNDLE_ENGINE=direct/READPLAN=

@Sankalp-Mittal
Sankalp-Mittal marked this pull request as ready for review August 5, 2026 07:59
@Sankalp-Mittal Sankalp-Mittal changed the title acc: run dashboard tests under the READPLAN matrix acc: run dashboard tests under the READPLAN variant Aug 5, 2026
Comment thread acceptance/bundle/deployment/bind/dashboard/recreation/script Outdated
Comment thread acceptance/bundle/deployment/bind/dashboard/recreation/script
Sankalp-Mittal and others added 2 commits August 5, 2026 12:30
The repo convention for an untraced readplanarg deploy is no comment: of the
~20 pre-existing readplanarg tests, only two comment it, and both explain
something the code cannot convey (the bug being guarded in
deploy/readplan/grants-remove-principal, the local-vs-cloud plan JSON in
select/basic). Restating "not traced because the command line differs by
READPLAN" in five scripts is what CLAUDE.md rejects.

Kept the two comments that carry a real why: bind writing state outside
DoCreate/DoUpdate, and the re-plan needed after unbind. Restored the
pre-existing comments in change-serialized-dashboard and publish-failure
verbatim.

Co-authored-by: Isaac
@Sankalp-Mittal
Sankalp-Mittal added this pull request to the merge queue Aug 5, 2026
Merged via the queue into main with commit 8828f4a Aug 5, 2026
25 checks passed
@Sankalp-Mittal
Sankalp-Mittal deleted the sankalp-mittal/dashboard-tests-readplan branch August 5, 2026 15:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants