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

[RNMobile] Gallery block: Add integration tests related to its manual tests #38571

Merged
merged 35 commits into from
Mar 1, 2022

Conversation

fluiddot
Copy link
Contributor

@fluiddot fluiddot commented Feb 7, 2022

Fixes wordpress-mobile/gutenberg-mobile#4532 and fixes wordpress-mobile/gutenberg-mobile#3670.

Description

Include integration tests for the Gallery block based on the manual tests for that block (reference).

Apart from the new tests, the following additional changes will be incorporated:

  • Media upload state constants are exposed in the block-editor package. This was required to test the flows of media management.
  • The testID prop has been added to the media options picker, in order to be able to query it in the tests.
  • A fix related to checking if a Modal component is visible has been applied to the custom matcher toBeVisible.
  • After writing all the integration tests, the common parts have been extracted to a helpers file located within the Gallery block tests folder. In an upcoming PR, some of these helpers might be exposed globally.
    NOTE: This change has required updating the Jest configuration to prevent helpers files to be considered test files.

Testing Instructions

  1. Run command npm run native test and observe that all tests succeed.
  2. Observe that PR check Unit Tests / Mobile succeeds.

Screenshots

N/A

Types of changes

Add integration tests

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).
  • I've updated related schemas if appropriate.

@fluiddot fluiddot added the Mobile App - i.e. Android or iOS Native mobile impl of the block editor. (Note: used in scripts, ping mobile folks to change) label Feb 7, 2022
@fluiddot fluiddot self-assigned this Feb 7, 2022
# Conflicts:
#	packages/block-library/src/gallery/test/index.native.js
#	test/native/helpers.js
@github-actions
Copy link

github-actions bot commented Feb 7, 2022

Size Change: 0 B

Total Size: 1.15 MB

ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 993 B
build/admin-manifest/index.min.js 1.24 kB
build/annotations/index.min.js 2.77 kB
build/api-fetch/index.min.js 2.27 kB
build/autop/index.min.js 2.15 kB
build/blob/index.min.js 487 B
build/block-directory/index.min.js 6.49 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/default-editor-styles-rtl.css 378 B
build/block-editor/default-editor-styles.css 378 B
build/block-editor/index.min.js 143 kB
build/block-editor/style-rtl.css 14.8 kB
build/block-editor/style.css 14.8 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 65 B
build/block-library/blocks/archives/style.css 65 B
build/block-library/blocks/audio/editor-rtl.css 150 B
build/block-library/blocks/audio/editor.css 150 B
build/block-library/blocks/audio/style-rtl.css 111 B
build/block-library/blocks/audio/style.css 111 B
build/block-library/blocks/audio/theme-rtl.css 125 B
build/block-library/blocks/audio/theme.css 125 B
build/block-library/blocks/block/editor-rtl.css 161 B
build/block-library/blocks/block/editor.css 161 B
build/block-library/blocks/button/editor-rtl.css 445 B
build/block-library/blocks/button/editor.css 445 B
build/block-library/blocks/button/style-rtl.css 560 B
build/block-library/blocks/button/style.css 560 B
build/block-library/blocks/buttons/editor-rtl.css 292 B
build/block-library/blocks/buttons/editor.css 292 B
build/block-library/blocks/buttons/style-rtl.css 275 B
build/block-library/blocks/buttons/style.css 275 B
build/block-library/blocks/calendar/style-rtl.css 207 B
build/block-library/blocks/calendar/style.css 207 B
build/block-library/blocks/categories/editor-rtl.css 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 79 B
build/block-library/blocks/categories/style.css 79 B
build/block-library/blocks/code/style-rtl.css 103 B
build/block-library/blocks/code/style.css 103 B
build/block-library/blocks/code/theme-rtl.css 124 B
build/block-library/blocks/code/theme.css 124 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 406 B
build/block-library/blocks/columns/style.css 406 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 125 B
build/block-library/blocks/comment-author-avatar/editor.css 125 B
build/block-library/blocks/comment-template/style-rtl.css 127 B
build/block-library/blocks/comment-template/style.css 127 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 123 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 222 B
build/block-library/blocks/comments-pagination/editor.css 209 B
build/block-library/blocks/comments-pagination/style-rtl.css 235 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-query-loop/editor-rtl.css 95 B
build/block-library/blocks/comments-query-loop/editor.css 95 B
build/block-library/blocks/cover/editor-rtl.css 546 B
build/block-library/blocks/cover/editor.css 547 B
build/block-library/blocks/cover/style-rtl.css 1.56 kB
build/block-library/blocks/cover/style.css 1.56 kB
build/block-library/blocks/embed/editor-rtl.css 293 B
build/block-library/blocks/embed/editor.css 293 B
build/block-library/blocks/embed/style-rtl.css 417 B
build/block-library/blocks/embed/style.css 417 B
build/block-library/blocks/embed/theme-rtl.css 124 B
build/block-library/blocks/embed/theme.css 124 B
build/block-library/blocks/file/editor-rtl.css 300 B
build/block-library/blocks/file/editor.css 300 B
build/block-library/blocks/file/style-rtl.css 255 B
build/block-library/blocks/file/style.css 255 B
build/block-library/blocks/file/view.min.js 353 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 965 B
build/block-library/blocks/gallery/editor.css 967 B
build/block-library/blocks/gallery/style-rtl.css 1.61 kB
build/block-library/blocks/gallery/style.css 1.61 kB
build/block-library/blocks/gallery/theme-rtl.css 122 B
build/block-library/blocks/gallery/theme.css 122 B
build/block-library/blocks/group/editor-rtl.css 159 B
build/block-library/blocks/group/editor.css 159 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 114 B
build/block-library/blocks/heading/style.css 114 B
build/block-library/blocks/html/editor-rtl.css 332 B
build/block-library/blocks/html/editor.css 333 B
build/block-library/blocks/image/editor-rtl.css 731 B
build/block-library/blocks/image/editor.css 730 B
build/block-library/blocks/image/style-rtl.css 518 B
build/block-library/blocks/image/style.css 523 B
build/block-library/blocks/image/theme-rtl.css 124 B
build/block-library/blocks/image/theme.css 124 B
build/block-library/blocks/latest-comments/style-rtl.css 284 B
build/block-library/blocks/latest-comments/style.css 284 B
build/block-library/blocks/latest-posts/editor-rtl.css 199 B
build/block-library/blocks/latest-posts/editor.css 198 B
build/block-library/blocks/latest-posts/style-rtl.css 447 B
build/block-library/blocks/latest-posts/style.css 446 B
build/block-library/blocks/list/style-rtl.css 94 B
build/block-library/blocks/list/style.css 94 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 493 B
build/block-library/blocks/media-text/style.css 490 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 649 B
build/block-library/blocks/navigation-link/editor.css 650 B
build/block-library/blocks/navigation-link/style-rtl.css 94 B
build/block-library/blocks/navigation-link/style.css 94 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 299 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation-submenu/view.min.js 375 B
build/block-library/blocks/navigation/editor-rtl.css 2.01 kB
build/block-library/blocks/navigation/editor.css 2.02 kB
build/block-library/blocks/navigation/style-rtl.css 1.89 kB
build/block-library/blocks/navigation/style.css 1.88 kB
build/block-library/blocks/navigation/view.min.js 2.85 kB
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 363 B
build/block-library/blocks/page-list/editor.css 363 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B
build/block-library/blocks/paragraph/editor.css 157 B
build/block-library/blocks/paragraph/style-rtl.css 273 B
build/block-library/blocks/paragraph/style.css 273 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/style-rtl.css 446 B
build/block-library/blocks/post-comments-form/style.css 446 B
build/block-library/blocks/post-comments/style-rtl.css 521 B
build/block-library/blocks/post-comments/style.css 521 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B
build/block-library/blocks/post-excerpt/editor.css 73 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B
build/block-library/blocks/post-excerpt/style.css 69 B
build/block-library/blocks/post-featured-image/editor-rtl.css 721 B
build/block-library/blocks/post-featured-image/editor.css 721 B
build/block-library/blocks/post-featured-image/style-rtl.css 153 B
build/block-library/blocks/post-featured-image/style.css 153 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 323 B
build/block-library/blocks/post-template/style.css 323 B
build/block-library/blocks/post-terms/style-rtl.css 73 B
build/block-library/blocks/post-terms/style.css 73 B
build/block-library/blocks/post-title/style-rtl.css 80 B
build/block-library/blocks/post-title/style.css 80 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 198 B
build/block-library/blocks/pullquote/editor.css 198 B
build/block-library/blocks/pullquote/style-rtl.css 389 B
build/block-library/blocks/pullquote/style.css 388 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 234 B
build/block-library/blocks/query-pagination/style.css 231 B
build/block-library/blocks/query/editor-rtl.css 131 B
build/block-library/blocks/query/editor.css 132 B
build/block-library/blocks/quote/style-rtl.css 201 B
build/block-library/blocks/quote/style.css 201 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/read-more/style-rtl.css 132 B
build/block-library/blocks/read-more/style.css 132 B
build/block-library/blocks/rss/editor-rtl.css 202 B
build/block-library/blocks/rss/editor.css 204 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 165 B
build/block-library/blocks/search/editor.css 165 B
build/block-library/blocks/search/style-rtl.css 397 B
build/block-library/blocks/search/style.css 398 B
build/block-library/blocks/search/theme-rtl.css 64 B
build/block-library/blocks/search/theme.css 64 B
build/block-library/blocks/separator/editor-rtl.css 99 B
build/block-library/blocks/separator/editor.css 99 B
build/block-library/blocks/separator/style-rtl.css 233 B
build/block-library/blocks/separator/style.css 233 B
build/block-library/blocks/separator/theme-rtl.css 172 B
build/block-library/blocks/separator/theme.css 172 B
build/block-library/blocks/shortcode/editor-rtl.css 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/editor-rtl.css 744 B
build/block-library/blocks/site-logo/editor.css 744 B
build/block-library/blocks/site-logo/style-rtl.css 181 B
build/block-library/blocks/site-logo/style.css 181 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 84 B
build/block-library/blocks/site-title/editor.css 84 B
build/block-library/blocks/social-link/editor-rtl.css 177 B
build/block-library/blocks/social-link/editor.css 177 B
build/block-library/blocks/social-links/editor-rtl.css 674 B
build/block-library/blocks/social-links/editor.css 673 B
build/block-library/blocks/social-links/style-rtl.css 1.37 kB
build/block-library/blocks/social-links/style.css 1.36 kB
build/block-library/blocks/spacer/editor-rtl.css 332 B
build/block-library/blocks/spacer/editor.css 332 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 471 B
build/block-library/blocks/table/editor.css 472 B
build/block-library/blocks/table/style-rtl.css 481 B
build/block-library/blocks/table/style.css 481 B
build/block-library/blocks/table/theme-rtl.css 188 B
build/block-library/blocks/table/theme.css 188 B
build/block-library/blocks/tag-cloud/style-rtl.css 226 B
build/block-library/blocks/tag-cloud/style.css 227 B
build/block-library/blocks/template-part/editor-rtl.css 235 B
build/block-library/blocks/template-part/editor.css 235 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 87 B
build/block-library/blocks/verse/style.css 87 B
build/block-library/blocks/video/editor-rtl.css 571 B
build/block-library/blocks/video/editor.css 572 B
build/block-library/blocks/video/style-rtl.css 173 B
build/block-library/blocks/video/style.css 173 B
build/block-library/blocks/video/theme-rtl.css 124 B
build/block-library/blocks/video/theme.css 124 B
build/block-library/common-rtl.css 934 B
build/block-library/common.css 932 B
build/block-library/editor-rtl.css 9.89 kB
build/block-library/editor.css 9.9 kB
build/block-library/index.min.js 167 kB
build/block-library/reset-rtl.css 474 B
build/block-library/reset.css 474 B
build/block-library/style-rtl.css 11.4 kB
build/block-library/style.css 11.4 kB
build/block-library/theme-rtl.css 665 B
build/block-library/theme.css 670 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.83 kB
build/blocks/index.min.js 46.4 kB
build/components/index.min.js 215 kB
build/components/style-rtl.css 15.6 kB
build/components/style.css 15.6 kB
build/compose/index.min.js 11.2 kB
build/core-data/index.min.js 13.9 kB
build/customize-widgets/index.min.js 11.2 kB
build/customize-widgets/style-rtl.css 1.39 kB
build/customize-widgets/style.css 1.39 kB
build/data-controls/index.min.js 663 B
build/data/index.min.js 7.65 kB
build/date/index.min.js 31.9 kB
build/deprecated/index.min.js 518 B
build/dom-ready/index.min.js 336 B
build/dom/index.min.js 4.53 kB
build/edit-navigation/index.min.js 16.2 kB
build/edit-navigation/style-rtl.css 3.76 kB
build/edit-navigation/style.css 3.76 kB
build/edit-post/classic-rtl.css 546 B
build/edit-post/classic.css 547 B
build/edit-post/index.min.js 29.9 kB
build/edit-post/style-rtl.css 7.19 kB
build/edit-post/style.css 7.18 kB
build/edit-site/index.min.js 42.1 kB
build/edit-site/style-rtl.css 7.23 kB
build/edit-site/style.css 7.22 kB
build/edit-widgets/index.min.js 16.5 kB
build/edit-widgets/style-rtl.css 4.12 kB
build/edit-widgets/style.css 4.13 kB
build/editor/index.min.js 38.5 kB
build/editor/style-rtl.css 3.71 kB
build/editor/style.css 3.71 kB
build/element/index.min.js 4.29 kB
build/escape-html/index.min.js 548 B
build/format-library/index.min.js 6.62 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.66 kB
build/html-entities/index.min.js 454 B
build/i18n/index.min.js 3.79 kB
build/is-shallow-equal/index.min.js 535 B
build/keyboard-shortcuts/index.min.js 1.83 kB
build/keycodes/index.min.js 1.41 kB
build/list-reusable-blocks/index.min.js 1.75 kB
build/list-reusable-blocks/style-rtl.css 838 B
build/list-reusable-blocks/style.css 838 B
build/media-utils/index.min.js 2.94 kB
build/notices/index.min.js 957 B
build/nux/index.min.js 2.12 kB
build/nux/style-rtl.css 747 B
build/nux/style.css 743 B
build/plugins/index.min.js 1.98 kB
build/preferences/index.min.js 1.2 kB
build/primitives/index.min.js 949 B
build/priority-queue/index.min.js 611 B
build/react-i18n/index.min.js 704 B
build/react-refresh-entry/index.min.js 8.44 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.69 kB
build/reusable-blocks/index.min.js 2.24 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 11.1 kB
build/server-side-render/index.min.js 1.61 kB
build/shortcode/index.min.js 1.52 kB
build/token-list/index.min.js 668 B
build/url/index.min.js 1.94 kB
build/viewport/index.min.js 1.08 kB
build/warning/index.min.js 280 B
build/widgets/index.min.js 7.18 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.07 kB

compressed-size-action

test/native/matchers/to-be-visible.js Show resolved Hide resolved
*/
export async function initializeEditor( props, { component = Editor } = {} ) {
export async function executeStoreResolvers( fn ) {
Copy link
Contributor

Choose a reason for hiding this comment

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

I like the idea of decoupling a lot of the initialization logic from initializeEditor if it is useful in isolation.

I just still find the initialization logic fairly confusing. I was trying to reason through why we are providing a delegate callback fn as an argument to executeStoreResolvers that appears to be invoked before anything async is awaited, and it reads like it's because we need the Redux Store to implicitly get instantiated when the EditorComponent is rendered so that any nested components dependent on the Store hook into it for dispatching/selecting. I was trying to understand what we consider "resolvers" by looking through the src/redux-store module.

executeStoreResolvers doesn't really appear to "execute" anything. It appears to mostly just mock timers before, and unmock after, the component that indirectly is provided the Redux Store is rendered.

At the very least, would it help to rename executeStoreResolvers/fn/result to something less ambiguous? I'm struggling at the moment to think of names myself.

export async function executeStoreResolvers( onRender ) {
...
        const result = onRender();
...
export async function initializeEditor( props, { component = Editor } = {} ) {
        const onRender = () => { const screen = render(<EditorComponent .../>); ... return screen; };
        ...
	return mockEnvironmentBeforeAndUnmockAfterRender( onRender );
	...

Does this make any sense?

await notifySucceedState( media[ 0 ] );
await notifySucceedState( media[ 1 ] );

expect( getEditorHtml() ).toMatchSnapshot();
Copy link
Contributor

Choose a reason for hiding this comment

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

Preface: Thank you for adding all of these tests for the Gallery Block. ❤️

I'm concerned with the inclusion of snapshot testing as I've only ever seen them be more troublesome than the value the allegedly provide. When a snapshot test fails, it's generally fairly difficult to understand if the snapshot assertion failed for the right or wrong reasons, e.g.,

  • the test assertion for the subject under test legitimately failed
  • some other nested component implementation detail indirectly changed the snapshot

, especially when you weren't the "original code owner."

In my previous environment, many times this resulted in the snapshots being improperly updated to reflect invalid new assertions that weren't in line with the expectations of the original test assertion. I'm not sure that that would happen here, but it's just given me this "PTSD" of "if we're using toMatchSnapshot we're probably not asserting correctly."

What do you think?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I totally agree and to be honest, I'm not a big fan of snapshot testing for the same arguments you mentioned. However, I'd like to note that in this case the snapshots are generated from the HTML output of the editor, not the classic React tree, so I don't initially foresee those problems.

In fact, I decided to go this way in order to simplify the tests and make them smaller, when we want to check if the HTML output of the editor is the expected value. To clarify this, let me share an example:

it( 'disables crop images setting (using snapshot testing)', async () => {
	// Initialize with a gallery that contains one item
	const screen = await initializeWithGalleryBlock( {
		numberOfItems: 1,
		media,
	} );
	const { getByText } = screen;

	await openBlockSettings( screen );

	// Disable crop images setting
	fireEvent.press( getByText( 'Crop images' ) );
	expect( getEditorHtml() ).toMatchSnapshot();
} );

it( 'disables crop images setting (not using snapshot testing)', async () => {
	const expectedHTML = `<!-- wp:gallery {"imageCrop":false,"linkTo":"none"} -->
	<figure class="wp-block-gallery has-nested-images columns-default"><!-- wp:image {"id":2000} -->
	<figure class="wp-block-image"><img src="https://test-site.files.wordpress.com/local-image-1.jpeg" alt="" class="wp-image-2000"/></figure>
	<!-- /wp:image --></figure>
	<!-- /wp:gallery -->`;

	// Initialize with a gallery that contains one item
	const screen = await initializeWithGalleryBlock( {
		numberOfItems: 1,
		media,
	} );
	const { getByText } = screen;

	await openBlockSettings( screen );

	// Disable crop images setting
	fireEvent.press( getByText( 'Crop images' ) );
	expect( getEditorHtml() ).toBe( expectedHTML );
} );

Copy link
Contributor

Choose a reason for hiding this comment

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

That does make me feel better about the odds that the snapshot serialization changes inadvertently when child component implementation details change. However, is there a reason that it wouldn't still be possible even if it was simply the serialization of the HTML output of the editor? I was trying to deep dive into the subscribeParentGetHtml implementation that interacts through the bridge with the requestGetHtml event to get a feel for the details. So far all files I've looked into have .native suffixes or are in the native layer so it doesn't appear that the core gutenberg code appears to be involved much, but I'm not confident.

That being said, I don't feel as strongly against using these types of snapshots. Even if it was possible for these to change inadvertently, I don't imagine the serialization of each block type changes fairly often. The most that would likely change would be default metadata in the HTML comments, and that would likely be a valid reason for an assertion to fail.

Thanks for elaborating further. I appreciate it. I am curious as to your thoughts about my question above so I won't resolve the conversation at the moment just so it doesn't get lost, but I intend to resolve the conversation thread.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

However, is there a reason that it wouldn't still be possible even if it was simply the serialization of the HTML output of the editor

Of course, it would be still possible but I foresee similar odds as if we place the HTML expectation within the test code. Eventually, we might have a fixture file to include them, but I think it would be turn out to be quite similar to what we have currently in the snapshot file. So I don't have a strong opinion on whether to include it, to be honest, I'm open to both.

@fluiddot fluiddot requested a review from geriux February 18, 2022 10:01
Copy link
Contributor

@ttahmouch ttahmouch left a comment

Choose a reason for hiding this comment

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

I think everything looks good to me in general. We may just want to update the name to waitForStoreResolvers, and anything that @geriux may be waiting on. I think I feel comfortable providing an approval after the minor change.

@fluiddot
Copy link
Contributor Author

I think everything looks good to me in general. We may just want to update the name to waitForStoreResolvers, and anything that @geriux may be waiting on. I think I feel comfortable providing an approval after the minor change.

Great, thanks for reviewing it 🙇. I'll try to apply the suggestion as soon as possible.

@ttahmouch
Copy link
Contributor

I think everything looks good to me in general. We may just want to update the name to waitForStoreResolvers, and anything that @geriux may be waiting on. I think I feel comfortable providing an approval after the minor change.

Great, thanks for reviewing it 🙇. I'll try to apply the suggestion as soon as possible.

Don't feel rushed. 🙂

@fluiddot fluiddot requested a review from ttahmouch March 1, 2022 16:29
@fluiddot
Copy link
Contributor Author

fluiddot commented Mar 1, 2022

Thanks @geriux and @ttahmouch for reviewing the PR, I'd like to let you know that I pushed a last commit in order to rename a helper, as it was mentioned in this comment. Apart from that, the PR is ready for a final review before merging, thanks 🙇 !

* @return {import('@testing-library/react-native').RenderAPI} A Testing Library screen.
*/
export async function initializeEditor( props, { component = Editor } = {} ) {
return waitForStoreResolvers( () => {
Copy link
Contributor

Choose a reason for hiding this comment

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

The usages of waitForStoreResolvers look good to me. Thanks for taking it into consideration. I appreciate it.

Copy link
Contributor

@ttahmouch ttahmouch left a comment

Choose a reason for hiding this comment

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

The changes look good to me overall. Thanks for adding Gallery Block tests.

@fluiddot fluiddot merged commit 5d0940d into trunk Mar 1, 2022
@fluiddot fluiddot deleted the rnmobile/add/gallery-block-integration-tests branch March 1, 2022 17:23
@github-actions github-actions bot added this to the Gutenberg 12.8 milestone Mar 1, 2022
dcalhoun added a commit to wordpress-mobile/test-cases that referenced this pull request Aug 25, 2023
dcalhoun added a commit to wordpress-mobile/test-cases that referenced this pull request Aug 25, 2023
dcalhoun added a commit to wordpress-mobile/test-cases that referenced this pull request Aug 25, 2023
dcalhoun added a commit to wordpress-mobile/test-cases that referenced this pull request Aug 25, 2023
dcalhoun added a commit to wordpress-mobile/test-cases that referenced this pull request Aug 25, 2023
dcalhoun added a commit to wordpress-mobile/test-cases that referenced this pull request Aug 29, 2023
* docs: Capture Attachment Page known issue

* docs: Remove TC010 Columns front-end presentation test

Other Columns tests assert the expected mark up. I think it is safe to
presume that if the mark up is correct, the front-end website will
render correctly in the browser.

* docs: Remove TC010 Gallery rearrange items test

This was automated in the following:

WordPress/gutenberg#38571

* docs: Remove TC012 Gallery Link to test

This was automated in the following:

WordPress/gutenberg#38571

* docs: Remove TC002 VideoPress caption test

This was automated in the following:

wordpress-mobile/gutenberg-mobile#5826

* docs: Remove TC001 Color settings segmented controls test

Manually or automatically testing animations feels like a low return on
effort required.

* docs: Remove TC004 Color settings swatch press test

Manually or automatically testing animations feels like a low return on
effort required.

* docs: Remove unused gallery-settings-link-to image
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Mobile App - i.e. Android or iOS Native mobile impl of the block editor. (Note: used in scripts, ping mobile folks to change)
Projects
None yet
3 participants