diff --git a/packages/playground/website/src/lib/state/url/resolve-blueprint-from-url.ts b/packages/playground/website/src/lib/state/url/resolve-blueprint-from-url.ts index 71101455cd..b17bdea7ad 100644 --- a/packages/playground/website/src/lib/state/url/resolve-blueprint-from-url.ts +++ b/packages/playground/website/src/lib/state/url/resolve-blueprint-from-url.ts @@ -215,8 +215,37 @@ function applyQueryOverridesToDeclaration( } } - // Login - if (query.get('login') !== 'no') { + const shouldSetLoginToTrue = () => { + /** + * Allow the Query API to explicitly set login + * if the login query param is provided. + */ + if (query.get('login') === 'no') { + return false; + } + if (query.get('login') === 'yes') { + return true; + } + + /** + * Set login to true by default in the Blueprint + * only if it doesn't already contain a login step or shorthand. + * Otherwise, the login provided by the blueprint would be overridden. + */ + if ( + blueprint.steps?.some( + (step) => + step && typeof step === 'object' && step?.step === 'login' + ) + ) { + return false; + } + if (blueprint.login !== undefined) { + return false; + } + return true; + }; + if (shouldSetLoginToTrue()) { blueprint.login = true; }