-
Notifications
You must be signed in to change notification settings - Fork 3.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: setup launchpad lifecycle #18734
feat: setup launchpad lifecycle #18734
Conversation
…se-launchpad-preferences
…se-launchpad-preferences
Thanks for taking the time to open a PR!
|
packages/app/src/App.vue
Outdated
|
||
const showLaunchpad = useMutation(App_ShowLaunchpadDocument) | ||
|
||
window.addEventListener('beforeunload', () => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried doing this and some Vue lifecycle functions but they only worked sometimes. It seems like there is a race to for the network request to finish going through.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think I am missing some context; when is this supposed to be triggered? Eg, when is the beforeunload
event called?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When the user exits the app I want it to show the launchpad at the browser launch screen
Test summaryRun details
View run in Cypress Dashboard ➡️ Flakiness
This comment has been generated by cypress-bot as a result of this project's GitHub integration settings. You can manage this integration in this project's settings in the Cypress Dashboard |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Left some comments, might be good to do a pair code review? I think I'm not 100% clear on the desired behavior, I def need more context to give a more thorough review.
packages/app/src/App.vue
Outdated
|
||
const showLaunchpad = useMutation(App_ShowLaunchpadDocument) | ||
|
||
window.addEventListener('beforeunload', () => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think I am missing some context; when is this supposed to be triggered? Eg, when is the beforeunload
event called?
await this.actions.project.setActiveProject(this.config.launchArgs.projectRoot) | ||
|
||
if (this.coreData.app.activeProject?.preferences) { | ||
toAwait.push(this.actions.project.launchProjectWithoutLaunchpad()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if we should name this something more generic, like launchElectron
? Eg, we might one day not have a launchpad, but it's likely we will always have some kind of electron app running.
const { browserId, testingType } = preferences[this.ctx.activeProject.title] ?? {} | ||
|
||
if (!browserId || !testingType) { | ||
throw Error('Cannont launch project without stored browserId or testingType') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo here, Cannont
. :)
throw Error('Cannont launch project without stored browserId or testingType') | ||
} | ||
|
||
const spec = this.makeSpec(testingType) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess this is hard requirement for now, but eventually we should not need to do this, I think... - maybe we can add a TODO to remove this when we refactor launchProject
to not require a spec on launch.
Also, since makeSpec
isn't used anywhere else, should we just do something like:
const spec = {
name: '...'
// ...
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I took this from the launchProject and forgot to add it back there. I can add this function there as well so when we refactor it to not require a spec we can clean it up in both spots.
@@ -1,7 +1,7 @@ | |||
<template> | |||
<form | |||
v-if="props.gql.browsers" | |||
@submit.prevent="$emit('launch')" | |||
@submit.prevent="emit('launch', props.gql.selectedBrowser.id)" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What changed that we need to now include the id? I don't see that change anywhere in this PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now when we launch we are storing their selected browser, now that I think about it I might be able to pull this off of the graphql context since we store the selected browser. I needed to refactor this anyways because id seems to come from graphql but not actually on our FoundBrowser
type
…ve-activeProject * unified-desktop-gui: (57 commits) chore: Add e2e tests for global mode (#18719) chore: add percy to app and launchpad package (#18781) chore: update test refactor: move settings in app (#18729) feat: setup launchpad lifecycle (#18734) feat(app): decouple event manager from driver (#18695) chore: Force single resolution for core modules, infinite loop guard (#18764) fix(driver): Sticky elements within a fixed container will not prevent an element from being scrolled to (#18441) chore: cleaning up the runner container pattern (#18741) feat: Use .config files (#18578) chore(app): basic style and example to stop scrollIntoView bug (#18736) chore: make `create` function on server.ts obsolete (#18615) feat: add codegen utility (#18708) docs: Add instructions to squash commits to develop in Contributing (#18728) fix(@cypress/react): throw if using Next.js swc-loader without nodeVersion=system (#18686) refactor: remove Ramda (#18723) fix: support using create-cypress-tests as part of build process (#18714) chore: Increase paralleled machines for desktop-gui tests (#18725) fix(app): do not cache graphql (#18716) chore: Update Chrome (stable) to 95.0.4638.69 (#18696) ...
Set up the launchpad life cycle if the user has been through it before. If it's users first time they will select the type of testing and browser to run. If they have chosen those before then it will skip the launchpad and go straight to the app.
Also adds a button to the settings page that allows the user to reconfigure their preferences.
Demo
Launchpad.Workflow.mov
PR Tasks
cypress-documentation
?type definitions
?cypress.schema.json
?