deephaven / deephaven-core

Deephaven Community Core
Other
249 stars 79 forks source link

web client UI compatibility test #5826

Open devinrsmith opened 1 month ago

devinrsmith commented 1 month ago

As evidence from #5825, we don't have web client UI integration tests from the deephaven-core side of things.

The web client e2e tests run in the web-client-ui and deephaven-plugins repo against ghcr.io/deephaven/server:edge.

In particular during a patch release, if a web UI version bump happens, its possible to depend on a web UI version built against a JS API version newer than deephaven-core.

While full integration tests of the web client UI from deephaven-core may be out of scope, we should be able to have some minimum version compatibility check; if the deephaven-core JS API version < web-client-ui JS API version, fail a test.

niloc132 commented 1 month ago

I think this would probably be better suited for @mofojed, at least to define what the tests will be (since web-client-ui already has such tests?), but I can do the Gradle/Docker wiring as needed?

mofojed commented 1 month ago

Tests are already written as actions and we have docker wiring setup in both web-client-ui and deephaven-plugins repos: Web-client-ui: https://github.com/deephaven/web-client-ui/blob/main/.github%2Fworkflows%2Fe2e.yml

Deephaven-plugins: https://github.com/deephaven/deephaven-plugins/blob/main/.github%2Fworkflows%2Fe2e.yml

It only runs against edge though, so we could run it against a matrix of releases nightly or something. That doesn't solve our chicken/egg problem where we need to wait for jsapi-types to be published first, and would not have caught the issue that's spinning off this ticket. I guess we should just have an action in deephaven-core that pulls the tests from the web repos and runs them before PRs merge into deephaven-core.

devinrsmith commented 1 month ago

One thing that might help is to reduce the cycle time for what web-client-ui can declare compatibility with; for example, if we released jsapi-types nightly, that might give web-client-ui a better target. Of course, that also means that we'd need some sort of check on web-client-ui that it's declared dependencies are correct.

Colin mentioned that

the web ui just assumes things are there

Is there a way where we can have stricter web-client-ui builds (ie, force it to reference methods from its declared dependencies)?

mofojed commented 1 month ago

The jsapi-types version is intentionally in sync with the deephaven-core version. We would lose that with a nightly release. We simply should not have declared the as any on the UI code and disable the warning, then it would not have passed our own tests. That's on me for not catching that in review.