From 72197a5df06505000a7e8b2d00399b9e58319e10 Mon Sep 17 00:00:00 2001 From: vorotamoroz Date: Wed, 29 Jul 2026 09:12:27 +0000 Subject: [PATCH] fix: use standard onboarding notice placement --- styles.css | 4 --- .../scripts/onboarding-invitation.ts | 27 ++++++++++++++++--- updates.md | 4 +++ 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/styles.css b/styles.css index 7815af18..df392c58 100644 --- a/styles.css +++ b/styles.css @@ -360,10 +360,6 @@ body { justify-content: center; } -body:not(.is-mobile):has(.sls-setting) .notice:has(.sls-onboarding-invitation-action) { - margin-right: 96px; -} - .sls-review-harness { box-sizing: border-box; max-width: 100%; diff --git a/test/e2e-obsidian/scripts/onboarding-invitation.ts b/test/e2e-obsidian/scripts/onboarding-invitation.ts index 8367fb82..fbc8189a 100644 --- a/test/e2e-obsidian/scripts/onboarding-invitation.ts +++ b/test/e2e-obsidian/scripts/onboarding-invitation.ts @@ -127,7 +127,9 @@ async function captureAndSelectMobileInvitation(): Promise { }); }); await withObsidianPage(port, async (page) => { - await onboardingNotice(page).locator(".sls-onboarding-invitation-action").click({ timeout: uiTimeoutMs }); + const invitation = onboardingNotice(page); + await invitation.locator(".sls-onboarding-invitation-action").click({ timeout: uiTimeoutMs }); + await invitation.waitFor({ state: "hidden", timeout: uiTimeoutMs }); }); return screenshot; } @@ -178,6 +180,21 @@ async function openOnboardingFromSettings(): Promise { }); } +async function dismissVisibleNotices(): Promise { + await withObsidianPage(obsidianRemoteDebuggingPort(), async (page) => { + const notices = page.locator(".notice:visible"); + while ((await notices.count()) > 0) { + const noticeCount = await page.locator(".notice").count(); + await notices.first().click({ position: { x: 8, y: 8 }, timeout: uiTimeoutMs }); + await page.waitForFunction( + (previousCount) => document.querySelectorAll(".notice").length < previousCount, + noticeCount, + { timeout: uiTimeoutMs } + ); + } + }); +} + async function closeSettings(): Promise { await withObsidianPage(obsidianRemoteDebuggingPort(), async (page) => { const settingsContainer = page.locator(".modal-container").filter({ @@ -217,11 +234,13 @@ async function main(): Promise { console.log(`Fresh Vault startup evidence: ${JSON.stringify(evidence)}`); const desktopInvitation = await captureDesktopInvitation(); - await openOnboardingFromSettings(); - const settingsIntro = await captureAndCloseIntro("onboarding-intro-settings-desktop.png", false); - await closeSettings(); const mobileInvitation = await captureAndSelectMobileInvitation(); const mobileIntro = await captureAndCloseIntro("onboarding-intro-mobile.png", true); + await setObsidianMobileTestMode(obsidianRemoteDebuggingPort(), false, uiTimeoutMs); + await openOnboardingFromSettings(); + const settingsIntro = await captureAndCloseIntro("onboarding-intro-settings-desktop.png", false); + await dismissVisibleNotices(); + await closeSettings(); console.log( `Onboarding remained opt-in and kept unconfigured startup inert. Screenshots: ${[ diff --git a/updates.md b/updates.md index 078e03fc..3c54a849 100644 --- a/updates.md +++ b/updates.md @@ -12,6 +12,10 @@ Earlier releases remain available in the 0.25 release history and the legacy rel ## Unreleased +### Improved + +- Removed a custom positioning workaround from the onboarding Notice so that it follows Obsidian's standard placement and dismissal behaviour. + ## 1.0.0 27th July, 2026