Page MenuHomePhabricator

Onboarding dialog for saving an article to Saved list
Closed, ResolvedPublic5 Estimated Story Points

Description

Background

This ticket is a split from T400366
We agree to split that ticket into three tickets, this is one of them.

User Story

As a logged-in reader, I'd like to know what this bookmark icon does before I click it.

Design
  • SVG for illustration to be provided

  • The onboarding dialog informing users about the Save feature appears when the user is shown the Saved icon for the first time
    • The dialog points to where the Save feature is available depending on the width of the screen
  • The onboarding dialog should be exited by clicking the 'x' button or clicking anywhere on the screens.
  • Onboarding dialog is reviewed by the designer

Things we agreed to add on Oct 16

  • Make the illustration area smaller by reducing spacing above and below the illustration. See mock for guidance.
  • Do not show the onboarding dialog if the bookmark is out of screen (i.e. the user has scrolled down or away from bookmark)
  • fix z-index issue with sticky header
  • Keyboard behaviour like tabbing should not dismiss the dialog (applying the default behaviour of the codex popover component)

First time the user is shown the Save icon

New Vector.png (789×1 px, 263 KB)
HEADER.png (744×733 px, 164 KB)
When the Save icon is in the action bar, the onboarding dialog points to itWhen the Save icon is in the tools menu, the onboarding dialog points to the tools menu
Link to Figma

Requirement

Scope: Desktop web (Vector 2022).

  • The onboarding dialog for the Reading List “Save” feature appears the first time a logged-in user is shown the bookmark icon.
  • The dialog explains the Save feature with the provided save_onboarding.svg illustration.
  • The dialog points to the visible Save icon, adapting position based on screen width (action bar or tools menu).
  • The dialog must:
    • Not appear if the Save icon is out of view (user has scrolled away).
    • Be dismissible by clicking the close (“x”) button or clicking outside the dialog.
    • Not dismiss on keyboard tabbing.
    • Maintain correct z-index and appear above sticky headers or other UI layers.
    • Use reduced spacing above and below the illustration per updated design mock.
  • The onboarding dialog must be reviewed and approved by design for visual accuracy.

BDD

Feature: Onboarding dialog for Save feature

  Scenario: Displaying onboarding dialog for first-time users
    Given I am a logged-in user who has never seen the Save feature onboarding
    When the Save icon becomes visible on screen
    Then an onboarding dialog appears pointing to the Save icon
    And it displays the `save_onboarding.svg` illustration
    And the spacing around the illustration is reduced per design updates

  Scenario: Dismissing the onboarding dialog
    Given the onboarding dialog is visible
    When I click the close (“x”) button or anywhere outside the dialog
    Then the dialog closes
    And it does not reappear during the same session

  Scenario: Accessibility and layering behavior
    Given the onboarding dialog is visible
    When I navigate using the keyboard
    ~~Then tabbing does not dismiss the dialog~~
    And the dialog remains layered above sticky headers and other elements

Test Steps

Test Case 1: Display of onboarding dialog

  1. Log in with a test user who has not seen the Save onboarding before.
  2. Load an article with the Save icon visible in the toolbar.
  3. AC1: The onboarding dialog appears only when the Save icon is visible on screen.
  4. AC2: The dialog points correctly to the Save icon (action bar or tools menu based on layout).
  5. AC3: The save_onboarding.svg illustration appears with reduced top and bottom spacing.

Test Case 2: Dismissal behavior

  1. Click the “x” button or any area outside the dialog.
  2. AC4: The dialog closes and does not reappear during the same session.

Test Case 3: Accessibility and z-index verification

  1. Use the keyboard to tab through elements while the dialog is open.
  2. AC5: Tabbing does not dismiss the dialog. Requirement removed as of Oct 16
  3. AC6: The dialog remains visible and above sticky headers or overlapping UI elements.

QA Results - Prod

Event Timeline

Sneha triaged this task as High priority.Oct 9 2025, 8:11 PM

Change #1195312 had a related patch set uploaded (by Aude; author: Aude):

[mediawiki/extensions/ReadingLists@master] WIP - Onboarding popover for bookmark save pages button

https://gerrit.wikimedia.org/r/1195312

Change #1196113 had a related patch set uploaded (by Aude; author: Aude):

[mediawiki/extensions/WikimediaEvents@master] Load onboarding saved pages dialog for users in ReadingLists experiment

https://gerrit.wikimedia.org/r/1196113

@Sneha We will need the svg image for the dialog. For now, I am using a placeholder image.

Is the onboarding dialog (for saving pages) only for the bookmark icon button in the views toolbar at the top of the page?

or do we also need it for the sticky header. If so, I am not sure how well that would work.

SToyofuku-WMF added a subscriber: aude.

Is the onboarding dialog (for saving pages) only for the bookmark icon button in the views toolbar at the top of the page?

or do we also need it for the sticky header. If so, I am not sure how well that would work.

I believe we said it's fine to not include sticky header since they'll get prompted before being able to scroll, but the parent task also says 500ms or 1s after pageload so I'd defer to @Sneha and @Jdlrobson-WMF

@aude SVG attached in the description.

Regarding where to point (article action bar or sticky header) there are two possible scenarios:

  • The onboarding dialog appears before the user has scrolled - in this case if the user scrolls up while the dialog is up, we had decided that its okay for the onboarding dialog to keep pointing at the article action bar (even though it will be off the screen) until the user clicks on the page and its dismissed. An option to have the dialog slide up to point to icon in sticky header was discussed but that transition felt like extra work right now for V1 but if its easy to do we can do that.
  • The onboarding dialog is triggered after the user has scrolled - I don't know how often this case happens but if our load time is long then perhaps we could consider pointing at the icon in sticky header for this case? Or we can not trigger the dialog until next page load.

@aude also added link to figma in the description

@Sneha @Volker_E

If we use color blue100 as the background color in the heading, I don't see it available in the design tokens https://doc.wikimedia.org/codex/latest/design-tokens/color.html unless there is some specific way to use it?

Best I can find is background-color-progressive-subtle which is blue50 and inverts when in dark mode.

Or do we stay with blue100 (using the hexcode?) and even in dark mode?

@aude Looks like the one I used is background-color-progressive-subtle--hover. Could we still use it even if it says hover? Does it also invert in dark mode?

For the most simple implementation in V1, I think it is best to keep the onboarding dialog attached to the bookmark button in the action bar.

Change #1196113 abandoned by Aude:

[mediawiki/extensions/WikimediaEvents@master] Load onboarding saved pages dialog for users in ReadingLists experiment

https://gerrit.wikimedia.org/r/1196113

The color inverts in dark mode with background-color-progressive-subtle--hover as the background color:

Screenshot 2025-10-15 at 12.42.53 PM.png (1×1 px, 248 KB)

Screenshot 2025-10-15 at 12.43.15 PM.png (1×1 px, 245 KB)

I am not sure if it is okay to use this color token here or if there is a better way to implement this?

@aude I am okay with keeping keep the onboarding dialog attached to the bookmark button in the action bar.

Re: dialog screenshots:

  • The colours in the screenshot look good to me. I will let @Volker_E chime in on whether we can use that colour token or not.
  • I think the illustration area is a bit too tall, could be try to reduce the white space above and below similar to mock?

@Sneha Something went off with the SVG, it features binary image data, where it should only consist of vector paths – unnecessary blowing up the size for the image, possibly hurting users on low connections. Would you revisit, happy to collab on it.

Regarding the task requirement:

Keyboard behaviour like tabbing should not dismiss the dialog

The Codex Popover handles tab keyboard input as:

It moves focus to the next interactive element and, if that element is outside the Popover, it closes the Popover.

https://doc.wikimedia.org/codex/latest/components/demos/popover.html#keyboard-navigation

I don't think we should alter the behavior as I am sure Codex thought out the accessibility aspects better than we can and there should be consistent behavior with all popovers.

I took care of these:

  • Make the illustration area smaller by reducing spacing above and below the illustration. See mock for guidance.
  • Do not show the onboarding dialog if the bookmark is out of screen (i.e. the user has scrolled down or away from bookmark)
  • fix z-index issue with sticky header

Updated svg added to description

Change #1195312 merged by jenkins-bot:

[mediawiki/extensions/ReadingLists@master] Onboarding popover for bookmark save pages button

https://gerrit.wikimedia.org/r/1195312

Change #1197347 had a related patch set uploaded (by Aude; author: Aude):

[mediawiki/extensions/ReadingLists@master] Avoid layout shift when onboarding image loads

https://gerrit.wikimedia.org/r/1197347

SToyofuku-WMF set the point value for this task to 5.Oct 21 2025, 5:30 PM

@aude and I had a sync and she showed me the demo of how this is working currently.

There are few things to note here that we consciously decided to not pursue as part of this work:

  • The onboarding dialog will not point to Tools menu in smaller viewports. With our logic for showing the onboarding dialog only when the "save icon" is on the screen will ensure that users will see it eventually.
  • We decided to not reduce the size of the illustrations as current size helps draw attention to the dialog
  • We also decided to leave the onboarding pointer aligned to the right because moving it in other location (besides left and centre) adds complexity. And given it is not a huge design concern right now we decided to leave it as is in interest of time.

And so we can move this ticket to sign off as it is working as expected.

Test Result - Prod

Status: ❓Need More Info / ❌ FAIL
Environment: testwiki
OS: macOS Tahoe 26.x
Browser: Chrome Canary (latest as of test date)
Device: MS
Emulated Device: NA

Test Case 1: Display of onboarding dialog

  1. Log in with a test user who has not seen the Save onboarding before.
  2. Load an article with the Save icon visible in the toolbar.
  3. AC1: The onboarding dialog appears only when the Save icon is visible on screen.
  4. AC2: The dialog points correctly to the Save icon (action bar or tools menu based on layout).
  5. AC3: The save_onboarding.svg illustration appears with reduced top and bottom spacing.

screenshot 319.png (1×1 px, 248 KB)

Test Case 2: Dismissal behavior

  1. Click the “x” button or any area outside the dialog.
  2. AC4: The dialog closes and does not reappear during the same session.
screenshot 139.mov.gif (1×1 px, 662 KB)
screenshot 138.mov.gif (1×1 px, 1 MB)

Test Case 3: Accessibility and z-index verification

  1. Use the keyboard to tab through elements while the dialog is open.
  2. AC5: Tabbing does not dismiss the dialog.

screenshot 140.mov.gif (1×1 px, 1 MB)

  1. AC6: The dialog remains visible and above sticky headers or overlapping UI elements.

The dialog dissappears as soon as you scroll so this isn't something I can test. It wasn't clear if the dialog would display with the sticky header. To test this I navigate directly to a section heading and the dialog doesn't appear, it doesn't appear when I navigate to the top of the page so that the sticky header disappears. I have to reload the page to get it to appear.

screenshot 141.mov.gif (1×1 px, 3 MB)

Edtadros updated the task description. (Show Details)

^ @SToyofuku-WMF some additional follow ups may be needed!

Posted in the team channel - I think we can keep this ticket closed and open a new one once Sneha/Hsuanwei/Volker weigh in. I'll tag them too

Thanks folks -- closing this ticket again, created tasks https://phabricator.wikimedia.org/T408735 and https://phabricator.wikimedia.org/T408738 to captured the failed cases for future sprint.

We discussed this with the team and concluded that AC 9 and AC 10 (which are marked as fail in QA test in the above comment) are working as expected.
AC 9 - We are currently following the default keyboard behaviour of codex pop up component which would dismiss the dialog when you tab and we decided to not override this behaviour
AC 10 - When the save icon is outside the screen we do not show the onboarding dialog and so same behaviour is extended to scrolling i.e. if less 90% of the bookmark icon is visible, then we hide the dialog