Skip to content

Conversation

@dannon
Copy link
Member

@dannon dannon commented Aug 19, 2025

The test migration is still a giant pain, there are warnings, but the app builds, runs, and much of it does work. Very obviously still a work in progress, but I'm making this into a PR for at least a little more visibility, hoping to reduce conflicts and recruit folks to help test manually, fix tests, etc.

I will try to keep this rebased frequently so the branch doesn't slip away into the darkness yet again. (and, I rebased yesterday and it's already got 6 conflicted files)

Also, I have separated this from the vite branch as that actually (somewhat unexpectedly) had evenmore blockers than this one did. We still want to swap over, but we can push this one first at this point. The previous perceived dependency on the vite migration was primarily typescript errors we have for the most part now addressed in the build.

Unit test status (~10% failing, which is still a lot.)
image

Notes:

  • We're running with significant whitespace mode on in the vue compiler -- this is not the default and we should swap over time.

How to test the changes?

(Select all options that apply)

  • I've included appropriate automated tests.
  • This is a refactoring of components with existing test coverage.
  • Instructions for manual testing are as follows:
    1. [add testing steps and prerequisites here if you didn't write automated tests covering all your changes]

License

  • I agree to license these and all my past contributions to the core galaxy codebase under the MIT license.

@jmchilton
Copy link
Member

Very exciting stuff - thank you so much!

Would you be okay if I wrote a wrapper Vue test mount that would allow us to use either of these patterns based on what version is available? I feel like we can start migrating all the tests without the upgrade that way. We an use the new paradigms now and it would simplify this branch a lot of getting using paradigms that will reduce conflicts in the future.

Also I think the upgrade of prettier in the middle there seems like it is a causing a lot of unrelated changes. Is it possible we can pull that out and apply to our current codebase or that we can remove it and apply it after the Vue 3 migration is done?

dannon added 26 commits August 26, 2025 11:06
Update render functions in provider and content components to use Vue 3 compatible slot syntax. This fixes the runtime error '(destructured parameter) is undefined' by properly checking and calling slot functions.
Add error handling and cleaner slot function calls to diagnose and prevent runtime errors
Simplify slot handling to use the Vue 3 unified slots API where this.$slots.default
is always a function that returns VNodes. This should work correctly with @vue/compat.
template tries to attach event modifiers (like .stop) to handler
functions that are sometimes undefined
- Convert SimpleProviderMixin to useSimpleProvider composable
- Migrate all store providers (DbKey, Datatypes, etc.) to setup()
- Update SingleQueryProvider factory to return setup-based components
- Convert DebouncedInput with proper RxJS subscription cleanup
- Keep backward compatibility with SimpleProviderMixin temporarily
- Add proper emits declarations and cleanup lifecycle hooks
- Remove unused 'computed' import from storeProviders.js
- Remove unused 'update' function and 'exposed' variable from SingleQueryProvider.js
Use toRaw() to unwrap reactive proxy objects before sending to web worker
Add deepToRaw helper to totally unwrap proxies before sending to web
worker.  This should still be reactive, since it's sent on query.
- Add 'as any' casting for findComponent() calls to fix TypeScript errors
- Use await with vm.$emit() for consistency
- These changes are necessary for TypeScript compilation with Vue Test Utils v2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants