Skip to content
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

Set explicit z-index on interface body to ensure it’s pinned under interface header #32732

Merged
merged 2 commits into from
Jun 22, 2021

Conversation

getdave
Copy link
Contributor

@getdave getdave commented Jun 16, 2021

Description

On smaller viewports on Safari iOS the interface header can (under limited circumstances) suffer a render glitch whereby the content below "bleeds" into it.

See screenshots for Before/After.

This PR fixes this by setting an explicit z-index for the interface skeleton "body" "content" and ensuring this is lower than that of the interface skeleton "header".

Update: we had to revert applying to the "body" because that caused the "actions" panel to sit under the header when publishing a post. Applying to "content" achieves the same fix but without the nasty knock on effects.

Fixes #32631

How has this been tested?

Either on a real iOS device on the iOS simular spin up Safari and load WP with this branch built and enabled.

Before - verify the bug

  • Using Twenty Fourteen as a theme
  • Go to Appearance > Widgets
  • Make sure to add some blocks to be able to scroll the page
  • Scroll slowly
  • Notice the black top bar sometimes appears

After - verify the fix

  • Using Twenty Fourteen as a theme
  • Go to Appearance > Widgets
  • Make sure to add some blocks to be able to scroll the page
  • Scroll slowly
  • Notice the top bar retains the "white" background and no black bleeds through.

Also verify this change does not break other screens such as Post Editor or Site Editor.

Screenshots

Before

Screen.Capture.on.2021-06-16.at.11-58-38.mp4

After

Screen.Capture.on.2021-06-16.at.12-20-45.mp4

Types of changes

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • I've tested my changes with keyboard and screen readers.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR (please manually search all *.native.js files for terms that need renaming or removal).

@getdave getdave added [Type] Bug An existing feature does not function as intended [Feature] Widgets Screen The block-based screen that replaced widgets.php. [Package] Interface /packages/interface labels Jun 16, 2021
@getdave getdave requested review from draganescu and jasmussen June 16, 2021 11:26
@getdave getdave self-assigned this Jun 16, 2021
@github-actions
Copy link

github-actions bot commented Jun 16, 2021

Size Change: +34 B (0%)

Total Size: 1.04 MB

Filename Size Change
build/edit-navigation/style-rtl.css 3.09 kB +5 B (0%)
build/edit-navigation/style.css 3.09 kB +4 B (0%)
build/edit-post/style-rtl.css 7.05 kB +4 B (0%)
build/edit-post/style.css 7.04 kB +4 B (0%)
build/edit-site/style-rtl.css 4.76 kB +4 B (0%)
build/edit-site/style.css 4.75 kB +4 B (0%)
build/edit-widgets/style-rtl.css 3.5 kB +5 B (0%)
build/edit-widgets/style.css 3.5 kB +4 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.min.js 1.12 kB 0 B
build/annotations/index.min.js 2.93 kB 0 B
build/api-fetch/index.min.js 2.44 kB 0 B
build/autop/index.min.js 2.28 kB 0 B
build/blob/index.min.js 672 B 0 B
build/block-directory/index.min.js 6.61 kB 0 B
build/block-directory/style-rtl.css 989 B 0 B
build/block-directory/style.css 990 B 0 B
build/block-editor/index.min.js 119 kB 0 B
build/block-editor/style-rtl.css 13.5 kB 0 B
build/block-editor/style.css 13.5 kB 0 B
build/block-library/blocks/archives/editor-rtl.css 61 B 0 B
build/block-library/blocks/archives/editor.css 60 B 0 B
build/block-library/blocks/archives/style-rtl.css 65 B 0 B
build/block-library/blocks/archives/style.css 65 B 0 B
build/block-library/blocks/audio/editor-rtl.css 58 B 0 B
build/block-library/blocks/audio/editor.css 58 B 0 B
build/block-library/blocks/audio/style-rtl.css 112 B 0 B
build/block-library/blocks/audio/style.css 112 B 0 B
build/block-library/blocks/audio/theme-rtl.css 125 B 0 B
build/block-library/blocks/audio/theme.css 125 B 0 B
build/block-library/blocks/block/editor-rtl.css 161 B 0 B
build/block-library/blocks/block/editor.css 161 B 0 B
build/block-library/blocks/button/editor-rtl.css 475 B 0 B
build/block-library/blocks/button/editor.css 474 B 0 B
build/block-library/blocks/button/style-rtl.css 603 B 0 B
build/block-library/blocks/button/style.css 602 B 0 B
build/block-library/blocks/buttons/editor-rtl.css 315 B 0 B
build/block-library/blocks/buttons/editor.css 315 B 0 B
build/block-library/blocks/buttons/style-rtl.css 375 B 0 B
build/block-library/blocks/buttons/style.css 375 B 0 B
build/block-library/blocks/calendar/style-rtl.css 208 B 0 B
build/block-library/blocks/calendar/style.css 208 B 0 B
build/block-library/blocks/categories/editor-rtl.css 84 B 0 B
build/block-library/blocks/categories/editor.css 83 B 0 B
build/block-library/blocks/categories/style-rtl.css 79 B 0 B
build/block-library/blocks/categories/style.css 79 B 0 B
build/block-library/blocks/code/style-rtl.css 90 B 0 B
build/block-library/blocks/code/style.css 90 B 0 B
build/block-library/blocks/code/theme-rtl.css 131 B 0 B
build/block-library/blocks/code/theme.css 131 B 0 B
build/block-library/blocks/columns/editor-rtl.css 190 B 0 B
build/block-library/blocks/columns/editor.css 190 B 0 B
build/block-library/blocks/columns/style-rtl.css 422 B 0 B
build/block-library/blocks/columns/style.css 422 B 0 B
build/block-library/blocks/cover/editor-rtl.css 644 B 0 B
build/block-library/blocks/cover/editor.css 646 B 0 B
build/block-library/blocks/cover/style-rtl.css 1.22 kB 0 B
build/block-library/blocks/cover/style.css 1.23 kB 0 B
build/block-library/blocks/embed/editor-rtl.css 486 B 0 B
build/block-library/blocks/embed/editor.css 486 B 0 B
build/block-library/blocks/embed/style-rtl.css 401 B 0 B
build/block-library/blocks/embed/style.css 400 B 0 B
build/block-library/blocks/embed/theme-rtl.css 124 B 0 B
build/block-library/blocks/embed/theme.css 124 B 0 B
build/block-library/blocks/file/editor-rtl.css 301 B 0 B
build/block-library/blocks/file/editor.css 300 B 0 B
build/block-library/blocks/file/frontend.min.js 773 B 0 B
build/block-library/blocks/file/style-rtl.css 255 B 0 B
build/block-library/blocks/file/style.css 255 B 0 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB 0 B
build/block-library/blocks/freeform/editor.css 2.44 kB 0 B
build/block-library/blocks/gallery/editor-rtl.css 704 B 0 B
build/block-library/blocks/gallery/editor.css 705 B 0 B
build/block-library/blocks/gallery/style-rtl.css 1.06 kB 0 B
build/block-library/blocks/gallery/style.css 1.06 kB 0 B
build/block-library/blocks/gallery/theme-rtl.css 122 B 0 B
build/block-library/blocks/gallery/theme.css 122 B 0 B
build/block-library/blocks/group/editor-rtl.css 160 B 0 B
build/block-library/blocks/group/editor.css 160 B 0 B
build/block-library/blocks/group/style-rtl.css 57 B 0 B
build/block-library/blocks/group/style.css 57 B 0 B
build/block-library/blocks/group/theme-rtl.css 93 B 0 B
build/block-library/blocks/group/theme.css 93 B 0 B
build/block-library/blocks/heading/editor-rtl.css 152 B 0 B
build/block-library/blocks/heading/editor.css 152 B 0 B
build/block-library/blocks/heading/style-rtl.css 76 B 0 B
build/block-library/blocks/heading/style.css 76 B 0 B
build/block-library/blocks/home-link/style-rtl.css 259 B 0 B
build/block-library/blocks/home-link/style.css 259 B 0 B
build/block-library/blocks/html/editor-rtl.css 281 B 0 B
build/block-library/blocks/html/editor.css 281 B 0 B
build/block-library/blocks/image/editor-rtl.css 729 B 0 B
build/block-library/blocks/image/editor.css 727 B 0 B
build/block-library/blocks/image/style-rtl.css 481 B 0 B
build/block-library/blocks/image/style.css 485 B 0 B
build/block-library/blocks/image/theme-rtl.css 124 B 0 B
build/block-library/blocks/image/theme.css 124 B 0 B
build/block-library/blocks/latest-comments/style-rtl.css 281 B 0 B
build/block-library/blocks/latest-comments/style.css 282 B 0 B
build/block-library/blocks/latest-posts/editor-rtl.css 137 B 0 B
build/block-library/blocks/latest-posts/editor.css 137 B 0 B
build/block-library/blocks/latest-posts/style-rtl.css 529 B 0 B
build/block-library/blocks/latest-posts/style.css 529 B 0 B
build/block-library/blocks/list/style-rtl.css 63 B 0 B
build/block-library/blocks/list/style.css 63 B 0 B
build/block-library/blocks/media-text/editor-rtl.css 176 B 0 B
build/block-library/blocks/media-text/editor.css 176 B 0 B
build/block-library/blocks/media-text/style-rtl.css 492 B 0 B
build/block-library/blocks/media-text/style.css 489 B 0 B
build/block-library/blocks/more/editor-rtl.css 434 B 0 B
build/block-library/blocks/more/editor.css 434 B 0 B
build/block-library/blocks/navigation-link/editor-rtl.css 633 B 0 B
build/block-library/blocks/navigation-link/editor.css 634 B 0 B
build/block-library/blocks/navigation-link/style-rtl.css 94 B 0 B
build/block-library/blocks/navigation-link/style.css 94 B 0 B
build/block-library/blocks/navigation/editor-rtl.css 1.55 kB 0 B
build/block-library/blocks/navigation/editor.css 1.55 kB 0 B
build/block-library/blocks/navigation/frontend.min.js 2.86 kB 0 B
build/block-library/blocks/navigation/style-rtl.css 1.63 kB 0 B
build/block-library/blocks/navigation/style.css 1.63 kB 0 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B 0 B
build/block-library/blocks/nextpage/editor.css 395 B 0 B
build/block-library/blocks/page-list/editor-rtl.css 310 B 0 B
build/block-library/blocks/page-list/editor.css 311 B 0 B
build/block-library/blocks/page-list/style-rtl.css 240 B 0 B
build/block-library/blocks/page-list/style.css 240 B 0 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B 0 B
build/block-library/blocks/paragraph/editor.css 157 B 0 B
build/block-library/blocks/paragraph/style-rtl.css 247 B 0 B
build/block-library/blocks/paragraph/style.css 248 B 0 B
build/block-library/blocks/post-author/editor-rtl.css 209 B 0 B
build/block-library/blocks/post-author/editor.css 209 B 0 B
build/block-library/blocks/post-author/style-rtl.css 183 B 0 B
build/block-library/blocks/post-author/style.css 184 B 0 B
build/block-library/blocks/post-comments-form/style-rtl.css 140 B 0 B
build/block-library/blocks/post-comments-form/style.css 140 B 0 B
build/block-library/blocks/post-comments/style-rtl.css 360 B 0 B
build/block-library/blocks/post-comments/style.css 359 B 0 B
build/block-library/blocks/post-content/editor-rtl.css 139 B 0 B
build/block-library/blocks/post-content/editor.css 139 B 0 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B 0 B
build/block-library/blocks/post-excerpt/editor.css 73 B 0 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B 0 B
build/block-library/blocks/post-excerpt/style.css 69 B 0 B
build/block-library/blocks/post-featured-image/editor-rtl.css 338 B 0 B
build/block-library/blocks/post-featured-image/editor.css 338 B 0 B
build/block-library/blocks/post-featured-image/style-rtl.css 141 B 0 B
build/block-library/blocks/post-featured-image/style.css 141 B 0 B
build/block-library/blocks/post-template/editor-rtl.css 100 B 0 B
build/block-library/blocks/post-template/editor.css 99 B 0 B
build/block-library/blocks/post-template/style-rtl.css 379 B 0 B
build/block-library/blocks/post-template/style.css 380 B 0 B
build/block-library/blocks/post-title/style-rtl.css 60 B 0 B
build/block-library/blocks/post-title/style.css 60 B 0 B
build/block-library/blocks/preformatted/style-rtl.css 103 B 0 B
build/block-library/blocks/preformatted/style.css 103 B 0 B
build/block-library/blocks/pullquote/editor-rtl.css 183 B 0 B
build/block-library/blocks/pullquote/editor.css 183 B 0 B
build/block-library/blocks/pullquote/style-rtl.css 318 B 0 B
build/block-library/blocks/pullquote/style.css 318 B 0 B
build/block-library/blocks/pullquote/theme-rtl.css 169 B 0 B
build/block-library/blocks/pullquote/theme.css 169 B 0 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B 0 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B 0 B
build/block-library/blocks/query-pagination/editor-rtl.css 270 B 0 B
build/block-library/blocks/query-pagination/editor.css 262 B 0 B
build/block-library/blocks/query-pagination/style-rtl.css 168 B 0 B
build/block-library/blocks/query-pagination/style.css 168 B 0 B
build/block-library/blocks/query-title/editor-rtl.css 86 B 0 B
build/block-library/blocks/query-title/editor.css 86 B 0 B
build/block-library/blocks/query/editor-rtl.css 131 B 0 B
build/block-library/blocks/query/editor.css 132 B 0 B
build/block-library/blocks/quote/style-rtl.css 169 B 0 B
build/block-library/blocks/quote/style.css 169 B 0 B
build/block-library/blocks/quote/theme-rtl.css 221 B 0 B
build/block-library/blocks/quote/theme.css 221 B 0 B
build/block-library/blocks/rss/editor-rtl.css 201 B 0 B
build/block-library/blocks/rss/editor.css 202 B 0 B
build/block-library/blocks/rss/style-rtl.css 290 B 0 B
build/block-library/blocks/rss/style.css 290 B 0 B
build/block-library/blocks/search/editor-rtl.css 211 B 0 B
build/block-library/blocks/search/editor.css 211 B 0 B
build/block-library/blocks/search/style-rtl.css 359 B 0 B
build/block-library/blocks/search/style.css 362 B 0 B
build/block-library/blocks/search/theme-rtl.css 64 B 0 B
build/block-library/blocks/search/theme.css 64 B 0 B
build/block-library/blocks/separator/editor-rtl.css 99 B 0 B
build/block-library/blocks/separator/editor.css 99 B 0 B
build/block-library/blocks/separator/style-rtl.css 251 B 0 B
build/block-library/blocks/separator/style.css 251 B 0 B
build/block-library/blocks/separator/theme-rtl.css 172 B 0 B
build/block-library/blocks/separator/theme.css 172 B 0 B
build/block-library/blocks/shortcode/editor-rtl.css 512 B 0 B
build/block-library/blocks/shortcode/editor.css 512 B 0 B
build/block-library/blocks/site-logo/editor-rtl.css 440 B 0 B
build/block-library/blocks/site-logo/editor.css 441 B 0 B
build/block-library/blocks/site-logo/style-rtl.css 154 B 0 B
build/block-library/blocks/site-logo/style.css 154 B 0 B
build/block-library/blocks/social-link/editor-rtl.css 164 B 0 B
build/block-library/blocks/social-link/editor.css 165 B 0 B
build/block-library/blocks/social-links/editor-rtl.css 800 B 0 B
build/block-library/blocks/social-links/editor.css 799 B 0 B
build/block-library/blocks/social-links/style-rtl.css 1.34 kB 0 B
build/block-library/blocks/social-links/style.css 1.34 kB 0 B
build/block-library/blocks/spacer/editor-rtl.css 308 B 0 B
build/block-library/blocks/spacer/editor.css 308 B 0 B
build/block-library/blocks/spacer/style-rtl.css 48 B 0 B
build/block-library/blocks/spacer/style.css 48 B 0 B
build/block-library/blocks/table/editor-rtl.css 478 B 0 B
build/block-library/blocks/table/editor.css 478 B 0 B
build/block-library/blocks/table/style-rtl.css 480 B 0 B
build/block-library/blocks/table/style.css 480 B 0 B
build/block-library/blocks/table/theme-rtl.css 188 B 0 B
build/block-library/blocks/table/theme.css 188 B 0 B
build/block-library/blocks/tag-cloud/editor-rtl.css 118 B 0 B
build/block-library/blocks/tag-cloud/editor.css 118 B 0 B
build/block-library/blocks/tag-cloud/style-rtl.css 94 B 0 B
build/block-library/blocks/tag-cloud/style.css 94 B 0 B
build/block-library/blocks/template-part/editor-rtl.css 551 B 0 B
build/block-library/blocks/template-part/editor.css 550 B 0 B
build/block-library/blocks/template-part/theme-rtl.css 101 B 0 B
build/block-library/blocks/template-part/theme.css 101 B 0 B
build/block-library/blocks/term-description/editor-rtl.css 90 B 0 B
build/block-library/blocks/term-description/editor.css 90 B 0 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B 0 B
build/block-library/blocks/text-columns/editor.css 95 B 0 B
build/block-library/blocks/text-columns/style-rtl.css 166 B 0 B
build/block-library/blocks/text-columns/style.css 166 B 0 B
build/block-library/blocks/verse/style-rtl.css 87 B 0 B
build/block-library/blocks/verse/style.css 87 B 0 B
build/block-library/blocks/video/editor-rtl.css 569 B 0 B
build/block-library/blocks/video/editor.css 570 B 0 B
build/block-library/blocks/video/style-rtl.css 173 B 0 B
build/block-library/blocks/video/style.css 173 B 0 B
build/block-library/blocks/video/theme-rtl.css 124 B 0 B
build/block-library/blocks/video/theme.css 124 B 0 B
build/block-library/common-rtl.css 1.26 kB 0 B
build/block-library/common.css 1.26 kB 0 B
build/block-library/editor-rtl.css 9.68 kB 0 B
build/block-library/editor.css 9.67 kB 0 B
build/block-library/index.min.js 145 kB 0 B
build/block-library/reset-rtl.css 514 B 0 B
build/block-library/reset.css 515 B 0 B
build/block-library/style-rtl.css 10.2 kB 0 B
build/block-library/style.css 10.2 kB 0 B
build/block-library/theme-rtl.css 692 B 0 B
build/block-library/theme.css 693 B 0 B
build/block-serialization-default-parser/index.min.js 1.3 kB 0 B
build/block-serialization-spec-parser/index.min.js 3.06 kB 0 B
build/blocks/index.min.js 47.3 kB 0 B
build/components/index.min.js 180 kB 0 B
build/components/style-rtl.css 16.2 kB 0 B
build/components/style.css 16.2 kB 0 B
build/compose/index.min.js 10.2 kB 0 B
build/core-data/index.min.js 12.2 kB 0 B
build/customize-widgets/index.min.js 9.98 kB 0 B
build/customize-widgets/style-rtl.css 1.45 kB 0 B
build/customize-widgets/style.css 1.45 kB 0 B
build/data-controls/index.min.js 829 B 0 B
build/data/index.min.js 7.22 kB 0 B
build/date/index.min.js 31.8 kB 0 B
build/deprecated/index.min.js 739 B 0 B
build/dom-ready/index.min.js 576 B 0 B
build/dom/index.min.js 4.62 kB 0 B
build/edit-navigation/index.min.js 14 kB 0 B
build/edit-post/classic-rtl.css 454 B 0 B
build/edit-post/classic.css 454 B 0 B
build/edit-post/index.min.js 58.6 kB 0 B
build/edit-site/index.min.js 26 kB 0 B
build/edit-widgets/index.min.js 16 kB 0 B
build/editor/index.min.js 38.6 kB 0 B
build/editor/style-rtl.css 3.91 kB 0 B
build/editor/style.css 3.9 kB 0 B
build/element/index.min.js 3.44 kB 0 B
build/escape-html/index.min.js 739 B 0 B
build/format-library/index.min.js 5.68 kB 0 B
build/format-library/style-rtl.css 637 B 0 B
build/format-library/style.css 639 B 0 B
build/hooks/index.min.js 1.76 kB 0 B
build/html-entities/index.min.js 628 B 0 B
build/i18n/index.min.js 3.73 kB 0 B
build/is-shallow-equal/index.min.js 709 B 0 B
build/keyboard-shortcuts/index.min.js 1.74 kB 0 B
build/keycodes/index.min.js 1.43 kB 0 B
build/list-reusable-blocks/index.min.js 2.07 kB 0 B
build/list-reusable-blocks/style-rtl.css 629 B 0 B
build/list-reusable-blocks/style.css 628 B 0 B
build/media-utils/index.min.js 3.08 kB 0 B
build/notices/index.min.js 1.07 kB 0 B
build/nux/index.min.js 2.31 kB 0 B
build/nux/style-rtl.css 718 B 0 B
build/nux/style.css 716 B 0 B
build/plugins/index.min.js 1.99 kB 0 B
build/primitives/index.min.js 1.03 kB 0 B
build/priority-queue/index.min.js 791 B 0 B
build/react-i18n/index.min.js 924 B 0 B
build/redux-routine/index.min.js 2.82 kB 0 B
build/reusable-blocks/index.min.js 2.56 kB 0 B
build/reusable-blocks/style-rtl.css 225 B 0 B
build/reusable-blocks/style.css 225 B 0 B
build/rich-text/index.min.js 10.6 kB 0 B
build/server-side-render/index.min.js 1.64 kB 0 B
build/shortcode/index.min.js 1.68 kB 0 B
build/token-list/index.min.js 847 B 0 B
build/url/index.min.js 1.95 kB 0 B
build/viewport/index.min.js 1.28 kB 0 B
build/warning/index.min.js 1.13 kB 0 B
build/widgets/index.min.js 6.48 kB 0 B
build/widgets/style-rtl.css 722 B 0 B
build/widgets/style.css 722 B 0 B
build/wordcount/index.min.js 1.24 kB 0 B

compressed-size-action

@jasmussen jasmussen added the Browser Issues Issues or PRs that are related to browser specific problems label Jun 16, 2021
@jasmussen
Copy link
Contributor

Thanks for thinking about these issues. We've had a few Safari related issues lately, so I'd appreciate if @gwwar could also take this for a quick spin or just be aware of it.

But from I can tell, this change is fine. It's a global change that affects all editors, so I focused mostly to see on whether there were any regressions in post or site editors, there don't appear to be. Here's Chrome and Safari:

saf testing
testing

In general I tested:

  • The various configurations of the skeleton, with and without top toolbar, with and without fullscreen
  • Those changes but with the various breakpoints we have
  • Scrolling block toolbars and items that might overlap or overlay the top toolbar

As noted, I don't see any issues with this, so I think we can 👍 👍 this one after Kerry looks. Thanks Dave!

@jasmussen jasmussen requested a review from gwwar June 16, 2021 12:02
@gwwar
Copy link
Contributor

gwwar commented Jun 16, 2021

I'll try to 👀 today. If other folks would like to help I think we'll want to verify behavior on a native iOS device, a native android device and our normal browser desktop variants.

For context, I noticed that there were a number of browser issues related to z-index and --webkit-overflow-scrolling, for example https://bugs.chromium.org/p/chromium/issues/detail?id=128325 or in webkit: https://bugs.webkit.org/buglist.cgi?quicksearch=touch%20z-index

@jasmussen
Copy link
Contributor

If other folks would like to help I think we'll want to verify behavior on a native iOS device, a native android device and our normal browser desktop variants.

I wanted to suggest that if you are on a Mac you can install Xcode for free from the app store and use the built-in simulator, which should be as good as a physica device:

Screenshot 2021-06-16 at 18 02 00

Screenshot 2021-06-16 at 18 02 21

The benefit is that it's networked with your Mac so you can just type in localhost in Safari and it will bridge to your local dev environment. You can even inspect the contents of Mobile Safari using the Safari dev tools:

Screenshot 2021-06-16 at 18 03 55

The downside is that Xcode takes half a day to download and install. But it's worth it.

I assume you all know this already, but figured I'd document it for any others viewing the PR.

@gwwar
Copy link
Contributor

gwwar commented Jun 16, 2021

Visiting http://gutenberg.run/32732 should do the trick too, if folks are using a physical phone.

@getdave
Copy link
Contributor Author

getdave commented Jun 16, 2021

Just to say both videos in my PR desc are using the iOS simulator technique.

@gwwar
Copy link
Contributor

gwwar commented Jun 16, 2021

On a physical pixel 4: This might be an unrelated bug, but I can easily get a paragraph stuck, where an enter keypress doesn't create a new paragraph. An easy way to do this is to select a paragraph after a scroll then try typing enter

screen-20210616-133240.mp4

@gwwar
Copy link
Contributor

gwwar commented Jun 16, 2021

likely another unrelated one: On ios simulator, adding an image to the widgets screen makes the control width incorrect:

widget-image.mp4

Copy link
Contributor

@gwwar gwwar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work! Going to give tentative approval, much appreciated if we could clear up the E2E tests

Verified that this fixes the black scrollbar in iOS:

Before:

beforebar.mp4

After:

afterbar.mp4

@noisysocks noisysocks added the Backport to WP 6.7 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta label Jun 17, 2021
@getdave getdave force-pushed the fix/layout-skeleton-background-bleed-ios-safari branch 2 times, most recently from 27c7e59 to b9f83af Compare June 17, 2021 10:36
@getdave
Copy link
Contributor Author

getdave commented Jun 17, 2021

I have a real problem with the e2e tests here. Basically the e2e helper that clicks the publish button and waits for the snackbar to popup and say "Published" is failing.

The reason for this (AFAIK) is that the "Publish" action simply isn't being triggered. I did think it was the snackbar not appearing due to the new z-index but if you run the tests locally in interactive mode you can see the Publish action never happens.

If you try and mimic manually you will see that clicking Publish doesn't actually "publish" anymore. Rather it just toggles the sidebar. However, switch to master and rebuild and you will see everything works again.

I don't know what is going on here.

@jasmussen
Copy link
Contributor

Have you tried interactive tests? I can't recall the puppetteer attributes, but you can run them interactively so they show a small chromium window running each test. That might visualize the problem.

@gwwar
Copy link
Contributor

gwwar commented Jun 17, 2021

Yup, 💯 for interactive tests as @jasmussen suggested.

To run this locally, make sure wp-env is started (visit localhost:8889 to make sure things look okay and gutenberg is activated).

Then type:
npm run test-e2e -- --puppeteer-interactive specs/editor/various/preview.test.js. (See other options in https://developer.wordpress.org/block-editor/contributors/code/testing-overview/#end-to-end-testing)

If the suite is long it can help to add a temporary it.only to the affected test. @getdave let me know if you get stuck and I can help 🔍

@getdave
Copy link
Contributor Author

getdave commented Jun 17, 2021

Thanks for the advice both. In fact that is exactly what I've been doing and indeed it was what first allowed me to narrow down the issue.

I've now pushed up a "fix" which gets (or at least should get!) the tests to pass. The question is though why do we need this fix just because I added a z-index. To me it's currently making absolutely no sense.

Prior to the fix here was the flow for the publish button:

In this PR prior to my fix to <PostPublishButtonOrToggle> the isToggle value was always ending up as true meaning the Publish button simply toggled the sidebar open/closed. I think this is because

  • isPublishSidebarEnabled is a editor preference setting that indicates whether or not to show the panel at all (rather than whether or not it's actually open).
  • isSmallerThanMediumViewport is a boolean so will always be true if the viewport is smaller that 780px.

With my fix in place which has an additional check to see whether the panel is already open we give the logic a chance of allowing the button to be a true "Publish" button.

What I don't understand is why it's necessary. I can't see this happen in trunk. It seems confined to this branch despite me having rebased it several times against the latest trunk.

@gwwar
Copy link
Contributor

gwwar commented Jun 17, 2021

My initial thought is that some event propagation has changed (for example a component that should be listening to the click doesn't get it). I'll try to help 🔍 later today

@getdave
Copy link
Contributor Author

getdave commented Jun 17, 2021

I have a suspicion that we're expecting isPublishSidebarEnabled to mean "is the publish sidebar currently visible".

@getdave getdave force-pushed the fix/layout-skeleton-background-bleed-ios-safari branch from 1d9e9db to 47315e4 Compare June 18, 2021 07:38
@draganescu
Copy link
Contributor

We shouldn't need to add the second fix. My guess is similar to @gwwar 's that the z-index makes it that something does not receive the click anymore, and something else does. It's pretty unlikely that this tiny change uncovered a logic error in the header component.

@gwwar
Copy link
Contributor

gwwar commented Jun 18, 2021

Stepping through, the difference is that when the publish panel is open and we click the button again, isPublished should be true.

publish click with z-index publish click no z-index data store
publishz publish no z Screen Shot 2021-06-18 at 9 26 46 AM

@getdave I'd recommend looking at the core/editor store dispatches next. Let me know if you're not able to track it down. For debugging, what works for me is observing the flow of state updates for the related reducer in trunk, and seeing what dispatched the event. After doing so I'd compare with the branch and see if any dispatches are missing or incorrect.

@gwwar gwwar self-requested a review June 18, 2021 16:31
Copy link
Contributor

@gwwar gwwar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

E2E tests had a great catch here ✨ . We'll want to fix being able to publish a post, and making sure that the data stores are in the right state. Please ping me for another look when this is ready, or if you'd like help 🔍 further.

@getdave
Copy link
Contributor Author

getdave commented Jun 21, 2021

Stepping through, the difference is that when the publish panel is open and we click the button again, isPublished should be true.

If this is the case then it makes no sense. The isPublished status should not be tied to whether the panel is open or not. Moreover, we should not rely on clicking the button to change the status of isPublished in time for the action of the button to be updated to be "Publish" rather than "Toggle".

I think perhaps we have a race condition. Diving deeper...

@getdave getdave force-pushed the fix/layout-skeleton-background-bleed-ios-safari branch from 47315e4 to 48fe0e6 Compare June 21, 2021 11:50
@getdave
Copy link
Contributor Author

getdave commented Jun 21, 2021

I have the answer...incoming explanation 🥳

@getdave
Copy link
Contributor Author

getdave commented Jun 21, 2021

Direct Comparison

Essentially the issue is that we're not comparing apples with apples. Or to put it another way we aren't looking at the same Publish button when we're comparing z-index with no z-index. They are completely different buttons.

What's happening is the z-index is not allowing the correct publish button (ie: the one that you see on trunk) to show up as it's stacked underneath the body:

Screen.Capture.on.2021-06-21.at.13-41-40.mp4

With z-index

Screen.Capture.on.2021-06-21.at.13-41-04.mp4

Without z-index

Screen.Capture.on.2021-06-21.at.13-40-08.mp4

Adding z-index to body causes Publish button in actions sidebar to appear underneath the layout header causing the “wrong” publish button to be shown. Applying z-index to content avoids this whilst achieving the same outcome in terms of avoiding the bleed of backgrounfd on mobile safari when scrolling the Widgets editor.
@getdave
Copy link
Contributor Author

getdave commented Jun 21, 2021

@gwwar I've narrowed down the issue and implemented a fix. It was a weird one but so obvious once you see it!

Are you still happy with your 👍 ?

The e2e failures are being caused by #32857

@gwwar
Copy link
Contributor

gwwar commented Jun 21, 2021

@getdave which fix are you referring to, did you push to the branch?

@getdave
Copy link
Contributor Author

getdave commented Jun 21, 2021

@getdave which fix are you referring to, did you push to the branch?

@gwwar yes. It is very minor but zindex now applied to skeleton content not body.

Looks like I forgot to rename the CSS var but I can do that tomorrow.

Also see explanation in comments above.

// On Safari iOS on smaller viewports lack of a z-index causes the background
// to "bleed" through the header.
// See https://github.com/WordPress/gutenberg/issues/32631
z-index: z-index(".interface-interface-skeleton__body");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, gotcha the diff was hiding that this is being applied to .interface-interface-skeleton__content.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeh I'm sorry. It was unclear because I forgot about the naming of this CSS var .interface-interface-skeleton__body. It should be .interface-interface-skeleton__content. Looks like @noisysocks sorted it after he merged early.

Copy link
Contributor

@gwwar gwwar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I retested this in ios simulator, and verified that this fixes the background behavior. I also verified in Chrome/Safari that we can create a new post and publish.

Much appreciated if we can update the z-index name before 🚢 but no need for a re-review from me when that happens 👍

@noisysocks noisysocks merged commit 41ad459 into trunk Jun 22, 2021
@noisysocks noisysocks deleted the fix/layout-skeleton-background-bleed-ios-safari branch June 22, 2021 01:15
@github-actions github-actions bot added this to the Gutenberg 11.0 milestone Jun 22, 2021
@noisysocks noisysocks removed the Backport to WP 6.7 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta label Jun 22, 2021
noisysocks pushed a commit that referenced this pull request Jun 22, 2021
…terface header (#32732)

* Set explicit z-index on interface body to ensure it’s pinned under the interface header

* Add z-index to skelton content to avoid publish button bug

Adding z-index to body causes Publish button in actions sidebar to appear underneath the layout header causing the “wrong” publish button to be shown. Applying z-index to content avoids this whilst achieving the same outcome in terms of avoiding the bleed of backgrounfd on mobile safari when scrolling the Widgets editor.
jorgefilipecosta pushed a commit that referenced this pull request Jun 22, 2021
…terface header (#32732)

* Set explicit z-index on interface body to ensure it’s pinned under the interface header

* Add z-index to skelton content to avoid publish button bug

Adding z-index to body causes Publish button in actions sidebar to appear underneath the layout header causing the “wrong” publish button to be shown. Applying z-index to content avoids this whilst achieving the same outcome in terms of avoiding the bleed of backgrounfd on mobile safari when scrolling the Widgets editor.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Browser Issues Issues or PRs that are related to browser specific problems [Feature] Widgets Screen The block-based screen that replaced widgets.php. [Package] Interface /packages/interface [Type] Bug An existing feature does not function as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

On small screens the top toolbar has a black background on scroll
5 participants